假設我想要在文本級讀取文件(在某些字符集中編碼),而不是字節級。所以我需要一個Reader
類。Buffered reader和InputStreams的不同可能嵌套
我們還要說,我希望讀數能夠被緩衝。我發現至少有三種方法可以做到這一點。
public static void main(String[] args) throws Exception {
BufferedReader r1 = new BufferedReader(new FileReader("foo.txt"));
BufferedReader r2 = new BufferedReader(new InputStreamReader(new FileInputStream("foo.txt")));
InputStreamReader r3 = new InputStreamReader(new BufferedInputStream(new FileInputStream("foo.txt")));
}
r1和r2是幾乎一樣的,因爲從InputStreamReader
FileReader
繼承和實踐提出的InputStream
在它的基類。在字節被解碼爲文本之後,在這種情況下的緩衝將在字符級完成。
但是第三種情況有所不同,因爲緩衝發生在字節讀取和解碼到文本之間。緩衝發生在字節被解碼爲文本之前。
問問題是,這兩種情況之間有什麼重要區別嗎?有沒有一種選擇會比另一種更好的邊緣情況?