InputStreamReader 和 FileReader聯系與區別
兩者關系:
FileReader繼承自InputStreamReader ;
區別:
InputStreamReader 是字節流通向字符流的橋梁:它使用指定的 charset 讀取字節並將其解碼為字符。它使用的字符集可以由名稱指定或顯式給定,或者可以接受平臺默認的字符集。
每次調用 InputStreamReader 中的一個 read() 方法都會導致從底層輸入流讀取一個或多個字節。要啟用從字節到字符的有效轉換,可以提前從底層流讀取更多的字節,使其超過滿足當前讀取操作所需的字節。
為了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。例如:
BufferedReader in
=newBufferedReader(new InputStreamReader(System.in));
FileReader是用來讀取字符文件的便捷類。此類的構造方法假定默認字符編碼和默認字節緩沖區大小都是適當的。要自己指定這些值,可以先在 FileInputStream 上構造一個 InputStreamReader。
FileReader用於讀取字符流。要讀取原始字節流,請考慮使用 FileInputStream
總結:InputStreamReader 是用來讀取原始字節流,可指定編碼格式,而FileReader是讀取字符流,使用系統默認的編碼格式,當讀取中文文件是易出現亂碼問題。
推薦使用:
File file = new File (filename);
InputStreamReader input =new InputStreamReader(new FileInputStream(file),"UTF-8");
BufferedReader br = new BufferedReader(input);
InputStreamWriter與FileWriter異同點與之類似;
InputStreamReader 和 FileReader聯系與區別