39. Java IO: FileReader

想要查看此教程的目錄請點擊: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 結構會考慮這個的。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容