閱讀76 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java IO: 字符流的Buffered和Filter

本章節將簡要介紹緩衝與過濾相關的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

最後更新:2017-05-23 11:03:00

  上一篇:go  並發網2014.11月閱讀量Top10
  下一篇:go  JAVA中的命令模式實例教程