Java讀取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的關系和區別


一、Java讀取和存儲文件數據流

Java讀取文件,實際是將文件中的字節流轉換成字符流輸出到屏幕的過程
 
這里面涉及到兩個類:InputStreamReader和OutputStreamWriter
InputStreamReader:將字節流轉換成字符流
OutputStreamWriter:將字符流轉換成字節流
 
InputStreamReader繼承Reader類
OutputStreamWriter繼承Writer類
 

二、BufferedReader/FileReader/InputStreamReader

Reader是用於將文件中的內容讀出來;Writer用於將字符寫入到文件中去。
Reader是用於讀取字符流的抽象類

1、BufferedReader/FileReader/InputStreamReader的繼承關系如下:

所以通過BufferedReader/FileReader/InputStreamReader這三個方法讀出來的文件,都可以直接輸出字符

2、BufferedReader/FileReader/InputStreamReader的使用方法及區別

InputStreamReader:可以指定字符編碼格式,入參傳遞InputStream對象
InputStream對象定義方法有兩種。System.in或FileInputStream對象
System.in:讀取控制台的輸入內容
FileInputStream:可通過文件路徑名pathname或File對象實例化
InputStreamReader inputstreamreader1=new InputStreamReader(System.in);
InputStreamReader inputstreamreader2=new InputStreamReader(new FileInputStream("/opt/xxx"));
InputStreamReader inputstreamreader3=new InputStreamReader(new FileInputStream(new File("/opt/xxx")));
 
FileReader:入參直接傳遞文件pathname或File對象
FileReader是InputStreamReader的子類,不能指定字符編碼,其他與InputStreamReader基本類似
FileReader f1=new FileReader("/opt/xxx.txt");
FileReader f2=new FileReader(new File("/opt/xxx.txt"));

 

BufferedReader:入參有Reader對象和緩沖區大小(可不寫)
從緩存區中讀取字符流,提高效率;緩沖區大小:默認8192,默認不需要傳遞
建議都要用這個類去讀取文件
BufferedReader buffered_filereader=new BufferedReader(new FileReader(filename));
BufferedReader buffered_inputstreamreader=new BufferedReader(new InputStreamReader(fileinputstream));
 

三、FileInputStream

所有字節輸入流的超類,用於字節流的讀取。
上面已經講了,應用在實例化InputStreamReader對象時的一種入參
 
可以傳遞文件路徑名pathname或File對象實例化
 

四、讀取文件

BufferedReader對象使用readLine()方法判斷字符串是否為null判斷是否為文件末尾
String read;
while((read=buffered_filereader.readLine())!=null){
    System.out.println(read);
}
 
Reader子類InputSteamReader和FileReader 使用read()方法判斷是否為-1,來判斷是否為文件末尾
int i;
while ((i=filereader.read())!=-1){
    System.out.print((char)i);
}
 

五、Java代碼

1、InputSteamReader
String filename="/opt/xxx.log";
 
FileInputStream fileinputstream=new FileInputStream(filename);
InputStreamReader inputstreamreader=new InputStreamReader(fileinputstream);
int i;
while ((i=inputstreamreader.read())!=-1){
    System.out.print((char)i);
}
 
2、FileReader
String filename="/opt/xxx.log";
 
FileReader filereader=new FileReader(filename);
int i;
while ((i=filereader.read())!=-1){
    System.out.print((char)i);
}
 
3、BufferedReader(入參FileReader)
String filename="/opt/xxx.log";
 
FileReader filereader=new FileReader(filename);
BufferedReader buffered_filereader=new BufferedReader(filereader);
String read;
while((read=buffered_filereader.readLine())!=null){
    System.out.println(read);
}
 
4、BufferedReader(入參InputStreamReader)
String filename="/opt/xxx.log";
FileInputStream fileinputstream=new FileInputStream(filename);
InputStreamReader inputstreamreader=new InputStreamReader(fileinputstream);
BufferedReader buffered_inputstreamreader=new BufferedReader(inputstreamreader);
String read;
while((read=buffered_inputstreamreader.readLine())!=null){
    System.out.println(read);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM