41
阿裏雲
技術社區[雲棲]
Java IO: Buffered和Data
本小節會簡要概括Java IO中Buffered和data的輸入輸出流,主要涉及以下4個類型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。
BufferedInputStream
原文鏈接
BufferedInputStream能為輸入流提供緩衝區,能提高很多IO的速度。你可以一次讀取一大塊的數據,而不需要每次從網絡或者磁盤中一次讀取一個字節。特別是在訪問大量磁盤數據時,緩衝通常會讓IO快上許多。
為了給你的輸入流加上緩衝,你需要把輸入流包裝到BufferedInputStream中,代碼如下:
1 |
InputStream input = new BufferedInputStream( new FileInputStream( "c:\\data\\input-file.txt" ));
|
很簡單,不是嗎?你可以給BufferedInputStream的構造函數傳遞一個值,設置內部使用的緩衝區設置大小(譯者注:默認緩衝區大小8 * 1024B),就像這樣:
1 |
InputStream input = new BufferedInputStream( new FileInputStream( "c:\\data\\input-file.txt" ), 8 * 1024 );
|
這個例子設置了8KB的緩衝區。最好把緩衝區大小設置成1024字節的整數倍,這樣能更高效地利用內置緩衝區的磁盤。
除了能夠為輸入流提供緩衝區以外,其餘方麵BufferedInputStream基本與InputStream類似。
BufferedOutputStream
原文鏈接
與BufferedInputStream類似,BufferedOutputStream可以為輸出流提供緩衝區。可以構造一個使用默認大小緩衝區的BufferedOutputStream(譯者注:默認緩衝區大小8 * 1024B),代碼如下:
1 |
OutputStream output = new BufferedOutputStream( new FileOutputStream( "c:\\data\\output-file.txt" ));
|
也可以手動設置緩衝區大小,代碼如下:
1 |
OutputStream output = new BufferedOutputStream( new FileOutputStream( "c:\\data\\output-file.txt" ), 8 * 1024 );
|
為了更好地使用內置緩衝區的磁盤,同樣建議把緩衝區大小設置成1024的整數倍。
除了能夠為輸出流提供緩衝區以外,其餘方麵BufferedOutputStream基本與OutputStream類似。唯一不同的時,你需要手動flush()方法確保寫入到此輸出流的數據真正寫入到磁盤或者網絡中。
DataInputStream
原文鏈接
DataInputStream可以使你從輸入流中讀取Java基本類型數據,而不必每次讀取字節數據。你可以把InputStream包裝到DataInputStream中,然後就可以從此輸入流中讀取基本類型數據了,代碼如下:
01 |
DataInputStream input = new DataInputStream( new FileInputStream( "binary.data" ));
|
03 |
int aByte = input.read();
|
05 |
int anInt = input.readInt();
|
07 |
float aFloat = input.readFloat();
|
09 |
double aDouble = input.readDouble(); //etc.
|
當你要讀取的數據中包含了int,long,float,double這樣的基本類型變量時,DataInputStream可以很方便地處理這些數據。
DataOutputStream
原文鏈接
DataOutputStream可以往輸出流中寫入Java基本類型數據,例子如下:
1 |
DataOutputStream output = new DataOutputStream( new FileOutputStream( "binary.data" ));
|
5 |
//byte data output.writeInt(4545); |
7 |
//int data output.writeDouble(109.123); |
9 |
//double data output.close(); |
其他方麵與DataInputStream類似,不再贅述。
最後更新:2017-05-23 11:31:53