InputStreamReader 類
1、概述
轉換流 java.io.InputStreamReader ,是Reader的子類,是從字節流到字符流的橋梁。
該類讀取字節,並使用指定的字符集將其解碼為字符。它的字符集可以由名稱指定,也可以接受平台的默認字符集。
2、繼承自父類的共性成員方法
該類繼承於 Reader 類,繼承了父類的共性成員方法:
int read() 讀取單個字符並返回。
int read(char[] cbuf)一次讀取多個字符,將字符讀入數組。
void close() 關閉該流並釋放與之關聯的所有資源。
3、構造方法
InputStreamReader(InputStream in) 創建一個使用默認字符集的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName) 創建使用指定字符集的 InputStreamReader。
參數:
InputStream in:字節輸入流,用來讀取文件中保存的字節
String charsetName:指定的編碼表名稱,不區分大小寫,可以是utf-8/UTF-8,gbk/GBK,...不指定默認使用UTF-8
4、使用步驟
① 創建InputStreamReader對象,構造方法中傳遞字節輸入流和指定的編碼表名稱
② 使用InputStreamReader對象中的方法read讀取文件
③ 釋放資源
注意:構造方法中指定的編碼表名稱要和文件的編碼相同,否則會發生亂碼
Demo:
1 public static void main(String[] args) throws IOException { 2 //1.創建InputStreamReader對象,構造方法中傳遞字節輸入流和指定的編碼表名稱 3 //InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\gbk.txt"),"UTF-8");//??? 4 //將匿名對象流中的字節流按照GBK進行解碼為字符流
5 InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\gbk.txt"),"GBK");//你好 6
7 //2.使用InputStreamReader對象中的方法read讀取文件
8 int len = 0; 9 while((len = isr.read())!=-1){ 10 System.out.println((char)len); 11 } 12 //3.釋放資源
13 isr.close(); 14 }