想要查看此教程的目錄請(qǐng)點(diǎn)擊:Java IO教程目錄貼地址
Java InputStreamReader類(java.io.InputStreamReader)意圖是包裝了InputStream,因此將字節(jié)輸入流變成基于字符的Reader乓序。
InputStreamReader經(jīng)常被用來(lái)從文件或網(wǎng)絡(luò)連接讀取字符奇颠。例如堂鲤,一個(gè)文本文件字符用的UTF-8編碼米苹,你可以使用InputStreamReader去包裝FileInputStream以便去讀取這樣的文件悯姊。
InputStreamReader例子
下面是一個(gè)Java InputStreamReader的例子:
InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader inputStreamReader = new InputStreamReader(inputStream);
int data = inputStreamReader.read();
while(data != -1){
char theChar = (char) data;
data = inputStreamReader.read();
}
inputStreamReader.close()
例子首先創(chuàng)建了一個(gè)FileInputStream吠架,然后用InputStreamReader來(lái)包裝它锋喜。然后,例子通過(guò)InputStreamReader速去了文件中的所有內(nèi)容棒搜。
注意:為了清晰起見(jiàn)這里忽略了一些適當(dāng)?shù)漠惓L幚碚铗取O嚓P(guān)的異常處理可以參考“Java IO Exception Handling”
read()
InputStreamReader的read()方法返回一個(gè)int值,表示讀取的字符值力麸,下面是相關(guān)代碼:
int data = inputStreamReader.read();
你可以像下面這樣把返回的int值強(qiáng)轉(zhuǎn)成字符:
char aChar = (char) data;
流的結(jié)束
如果read()方法返回 -1可款,意味著流已經(jīng)全部讀取完畢。-1 是int值克蚂,不是byte或short類型闺鲸。當(dāng)流讀取完畢時(shí),就可以關(guān)閉流了
字符編碼構(gòu)造方法
Java InputStreamReader有許多可供選擇的構(gòu)造方法埃叭,允許你去指定字符集設(shè)置(ISO-Latin1, UTF-8, UTF-16 等等)摸恍。
下面是一個(gè)給構(gòu)造方法傳入編碼格式的例子:
InputStream inputStream = new FileInputStream("c:\\data\\input.txt");
Reader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
注意InputStreamReader構(gòu)造方法的第二個(gè)參數(shù)。
InputStreamReader會(huì)把來(lái)自底層的InputStream字節(jié)用UTF-8編碼來(lái)讀取。
關(guān)閉InputStreamReader
此處的內(nèi)容和其他流完全一致