一、InputStreamReader類
1、java.lang.Object
java.io.Reader
java.io.InputStreamReader 所有已實現的接口: Closeable, Readable 直接已知子類: FileReader
java.io.Reader
java.io.InputStreamReader 所有已實現的接口: Closeable, Readable 直接已知子類: FileReader
2、public class InputStreamReader extends Reader
InputStreamReader 是字節流通向字符流的橋樑:它使用指定的
charset
讀取字節並將其解碼爲字符。它使用的字符集可以由名稱指定或顯式給定,否則可能接受平臺默認的字符集。 每次調用 InputStreamReader 中的一個 read() 方法都會導致從基礎輸入流讀取一個或多個字節。要啓用從字節到字符的有效轉換,可以提前從基礎流讀取更多的字節,使其超過滿足當前讀取操作所需的字節。
爲了達到最高效率,可要考慮在 BufferedReader 內包裝 InputStreamReader。例如:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
4、常用方法
(1)public String getEncoding()
返回此流使用的字符編碼的名稱。 如果該編碼有歷史上用過的名稱,則返回該名稱;否則返回該編碼的規範化名稱。 如果使用
InputStreamReader(InputStream, String)
構造方法創建此實例,則返回的由此編碼生成的唯一名稱可能與傳遞給該構造方法的名稱不一樣。如果流已經關閉,則此方法可能返回 null
。 返回:此編碼的歷史名稱,如果流已經關閉,則可能返回
null
另請參見: Charset
(2)public int read() throws IOException 讀取單個字符。
返回: 讀取的字符,如果已到達流的末尾,則返回 -1
拋出:
IOException
- 如果發生 I/O 錯誤(3)public int read(char[] cbuf, int offset, int length) throws IOException將字符讀入數組中的某一部分。
參數:
cbuf
- 目標緩衝區 offset
- 以其處開始存儲字符的偏移量 length
- 要讀取的最大字符數 返回: 讀取的字符數,如果已到達流的末尾,則返回 -1
拋出:
IOException
- 如果發生 I/O 錯誤