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