reader和writer,主要涉及bufferedreader、bufferedwriter、filterreader、filterwriter。
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()方法,可以方便地一次性讀取一整行字符。
與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()方法確保寫入到此輸出流的資料真正寫入到磁碟或者網路中。
與filterinputstream類似,filterreader是實現自定義過濾輸入字元流的基類,基本上它僅僅只是簡單覆蓋了reader中的所有方法。
就我自己而言,我沒發現這個類明顯的用途。除了建構函式取乙個reader變數作為引數之外,我沒看到filterreader任何對reader新增或者修改的地方。如果你選擇繼承filterreader實現自定義的類,同樣也可以直接繼承自reader從而避免額外的類層級結構。
linux socket 緩衝區預設大小
1.tcp 收發緩衝區預設值 root www.linuxidc.com cat proc sys net ipv4 tcp rmem 4096 87380 416153687380 tcp接收緩衝區的預設值 root www.linuxidc.com cat proc sys net ipv4 t...
輸入緩衝區與輸出緩衝區
本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...
Linux socket預設緩衝區的配置檔案
linux下接收與傳送緩衝區的預設值儲存在 proc sys net core rmem default,proc sys net core wmem default linux下socket緩衝區大小的預設值在 proc虛擬檔案系統中有配置,其中的第乙個表示最小值,第二個表示預設值,第三個表示最大...