Java IO: 字符流的Buffered和Filter
作者:?Jakob?Jenkov ?譯者:?李璟(jlee381344197@gmail.com)
本章節將簡要介紹緩沖與過濾相關的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。
?
BufferedReader
原文鏈接
BufferedReader能為字符輸入流提供緩沖區,可以提高許多IO處理的速度。你可以一次讀取一大塊的數據,而不需要每次從網絡或者磁盤中一次讀取一個字節。特別是在訪問大量磁盤數據時,緩沖通常會讓IO快上許多。
BufferedReader和BufferedInputStream的主要區別在于,BufferedReader操作字符,而BufferedInputStream操作原始字節。只需要把Reader包裝到BufferedReader中,就可以為Reader添加緩沖區(譯者注:默認緩沖區大小為8192字節,即8KB)。代碼如下:
| 1 | Reader?input?=?new?BufferedReader(new?FileReader("c:\\data\\input-file.txt")); |
你也可以通過傳遞構造函數的第二個參數,指定緩沖區大小,代碼如下:
| 1 | Reader?input?=?new?BufferedReader(new?FileReader("c:\\data\\input-file.txt"),?8?*?1024); |
這個例子設置了8KB的緩沖區。最好把緩沖區大小設置成1024字節的整數倍,這樣能更高效地利用內置緩沖區的磁盤。
除了能夠為輸入流提供緩沖區以外,其余方面BufferedReader基本與Reader類似。BufferedReader還有一個額外readLine()方法,可以方便地一次性讀取一整行字符。
BufferedWriter
原文鏈接
與BufferedReader類似,BufferedWriter可以為輸出流提供緩沖區。可以構造一個使用默認大小緩沖區的BufferedWriter(譯者注:默認緩沖區大小8?*?1024B),代碼如下:
| 1 | Writer?writer?=?new?BufferedWriter(new?FileWriter("c:\\data\\output-file.txt")); |
也可以手動設置緩沖區大小,代碼如下:
| 1 | Writer?writer?=?new?BufferedWriter(new?FileWriter("c:\\data\\output-file.txt"),?8?*?1024); |
為了更好地使用內置緩沖區的磁盤,同樣建議把緩沖區大小設置成1024的整數倍。除了能夠為輸出流提供緩沖區以外,其余方面BufferedWriter基本與Writer類似。類似地,BufferedWriter也提供了writeLine()方法,能夠把一行字符寫入到底層的字符輸出流中。值得注意是,你需要手動flush()方法確保寫入到此輸出流的數據真正寫入到磁盤或者網絡中。
FilterReader
原文鏈接
與FilterInputStream類似,FilterReader是實現自定義過濾輸入字符流的基類,基本上它僅僅只是簡單覆蓋了Reader中的所有方法。
就我自己而言,我沒發現這個類明顯的用途。除了構造函數取一個Reader變量作為參數之外,我沒看到FilterReader任何對Reader新增或者修改的地方。如果你選擇繼承FilterReader實現自定義的類,同樣也可以直接繼承自Reader從而避免額外的類層級結構。
FilterWriter
原文鏈接
內容同FilterReader,不再贅述。
原創文章,轉載請注明:?轉載自并發編程網 – ifeve.com本文鏈接地址:?Java IO: 字符流的Buffered和Filter
轉載于:https://www.cnblogs.com/dassmeta/p/5323946.html
總結
以上是生活随笔為你收集整理的Java IO: 字符流的Buffered和Filter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaCodeTra 猴子选猴王 约瑟
- 下一篇: OC中isa