FileInputStream讀取位元組流。讀取檔案資料的兩種方式(寫的好)
總結:
//1讀取檔案的資料到位元組流inputStream
InputStream inputStream = new FileInputStream("D:\\demo.txt");//讀取檔案的資料到位元組流inputStream。
//2將位元組流inputStream轉換成字元流inputStreamReader。
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);//將位元組流inputStream轉換成字元流inputStreamReader。
//3讀取字元流inputStreamReader
char []ch = new char[1024];
int len = isr.read(ch);
轉載:https://blog.csdn.net/a909301740/article/details/52574602
FileInputStream(檔案位元組讀取流):
read():一個一個位元組的讀
read(byte[] buf):先把位元組存入到緩衝區位元組陣列中,一下讀一個數組(常用)
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Arrays; public class FileInputStreamDemo1 { private static final int SIZE = 4096; public static void main(String[] args) throws IOException { /* * 將已有檔案的資料讀取出來 * 既然是讀,使用InputStream * 而且是要操作檔案。FileInputStream * */ //為了確保檔案一定在之前是存在的,將字串路徑封裝成File物件 File file = new File("tempfile\\fos.txt"); if(!file.exists()){ throw new RuntimeException("要讀取的檔案不存在"); } //建立檔案位元組讀取流物件時,必須明確與之關聯的資料來源。 FileInputStream fis = new FileInputStream(file); //呼叫讀取流物件的讀取方法 //1.read()返回的是讀取到的位元組 //2.read(byte[] b)返回的是讀取到的位元組個數 //1. // int by=0; // while((by=fis.read())!=-1){ // System.out.println(by); // } //2. // byte[] buf = new byte[3]; // int len = fis.read(buf);//len記錄的是往位元組數組裡儲存的位元組個數 // System.out.println(len+"...."+Arrays.toString(buf));//只是轉成了字串的表現形式 // System.out.println(len+"...."+new String(buf,0,len));//轉成字串 // // int len1 = fis.read(buf); // System.out.println(len1+"...."+new String(buf,0,len1)); //建立一個位元組陣列,定義len記錄長度 int len = 0; byte[] buf = new byte[SIZE]; while((len=fis.read(buf))!=-1){ System.out.println(new String(buf,0,len)); } //關資源 fis.close(); } }
下面的寫的也還不錯
轉載:https://blog.csdn.net/omg_c/article/details/52038302
引數 in物件通過 InputStream in = System.in;獲得。//讀取鍵盤上的資料。
或者 InputStream in = new FileInputStream(String fileName);//讀取檔案中的資料。可以看出 FileInputStream 為InputStream的子類。
主要方法 :int read();//讀取單個字元。
int read(char []cbuf);//將讀取到的字元存到陣列中。返回讀取的字元數。
//1讀取檔案的資料到位元組流inputStream
InputStream inputStream = new FileInputStream("D:\\demo.txt");//讀取檔案的資料到位元組流inputStream。
//2將位元組流inputStream轉換成字元流inputStreamReader。
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);//將位元組流inputStream轉換成字元流inputStreamReader。
//3讀取字元流inputStreamReader的資料到字元陣列ch中,並返回字元陣列ch的真實的字元數
char []ch = new char[1024];
int len = isr.read(ch);
import java.io.*;
class InputStreamReaderDemo {
public static void transReadNoBuf() throws IOException {
/**
* 沒有緩衝區,只能使用read()方法。
*/
//讀取位元組流
//InputStream in = System.in;//讀取鍵盤的輸入。
InputStream in = new FileInputStream("D:\\demo.txt");//讀取檔案的資料。
//將位元組流向字元流的轉換。要啟用從位元組到字元的有效轉換,
//可以提前從底層流讀取更多的位元組.
InputStreamReader isr = new InputStreamReader(in);//讀取
//綜合到一句。
//InputStreamReader isr = new InputStreamReader(
//new FileInputStream("D:\\demo.txt"));
char []cha = new char[1024];
int len = isr.read(cha);
//按照我的理解是:讀取字元流ISR的資料到字元陣列cha中,並返回字元陣列cha的真實的字元數
System.out.println(new String(cha,0,len));
isr.close();
}
public static void transReadByBuf() throws IOException {
/**
* 使用緩衝區 可以使用緩衝區物件的 read() 和 readLine()方法。
*/
//讀取位元組流
//InputStream in = System.in;//讀取鍵盤上的資料
InputStream in = new FileInputStream("D:\\demo.txt");//讀取檔案上的資料。
//將位元組流向字元流的轉換。
InputStreamReader isr = new InputStreamReader(in);//讀取
//建立字元流緩衝區
BufferedReader bufr = new BufferedReader(isr);//緩衝
//BufferedReader bufr = new BufferedReader(
//new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以綜合到一句。
/*int ch =0;
ch = bufr.read();
System.out.println((char)ch);
*/
String line;
while((line = bufr.readLine())!=null){
System.out.println(line);
}
isr.close();
}
}