想要查看此教程的目錄請點擊:Java IO教程目錄貼地址
FileReader類(java.io.FileReader),可以基于字符流來讀取文件內容。它的工作機制類似于FileInputStream,但是FileInputStream是讀取字節。換句話來說,FileReader的意圖是讀取文本。一個字符可能對于一個或多個字節,這取決于字符的編碼格式。
FileReader例子
下面是Java FileReader的簡單例子:
Reader fileReader = new FileReader("c:\\data\\input-text.txt");
int data = fileReader.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = fileReader.read();
}
fileReader.close();
例子首先創建了一個FileReader,并且在構造方法傳入了一個文件路徑。然后,從FileReader每次讀取一個字符并讀取了所有的內容,最后,將FileReader關閉。
注意:上面例子省略了必要的異常處理,更多的關于異常處理的內容,可以參考“Java IO Exception Handling”。
read()
FileReader的read()方法返回了一個int值,此值為讀取的字符值。如果方法返回 -1,則代表數據已經讀取完畢。
FileReader字符編碼
FileReader假設你想以計算機的默認編碼格式來解碼文件中的字節。這并不一定是你想要的,你也改不不了這個。
如果你想指定一個不同的編碼格式,就不要用FileReader了。可以在FileInputStream上使用InputStreamReader。InputStreamReader可以讓你指定編碼格式去讀取文件的字節。
關閉FileReader
當你從FileReader讀取完字符之后你要記得去關閉它。關閉FileReader可以調用close()方法。可以像下面這樣來使用:
fileReader.close();
你也可以使用java 7中的 try-with-resources 結構。下面是如何使用try-with-resources來關閉流:
try(FileReader fileReader =
new FileReader("c:\\data\\text.txt")){
int data = fileReader.read();
while(data != -) {
System.out.print((char) data));
data = fileReader.read();
}
}
注意上面例子并沒有調用close()方法。try-with-resources 結構會考慮這個的。