Java IO(十):Buffered 和 Data

本小節簡要概括 Java IO 中的 Buffered 和 Data 的輸入輸出流,主要涉及以下 4 個類型的流:BufferedInputStream、BufferedOutputStream、DataInputStream、DataOutputStream。

BufferedInputStream

BufferedInputStream 能爲輸入流提供緩衝區,能提高很多 IO 速度。你可以一次讀取一大塊數據,而不需要每次從網絡或者磁盤中一次讀取一個字節。特別是在訪問大量磁盤數據時,緩衝通常會讓 IO 快上很多。

爲了給你的輸入流加上衝緩衝,你需要把流包裝到 BufferedInputStream 中:

InputStream input = new BufferedInputStream(new FileInputStream("c:\\data\\text.txt"));

很簡單吧,你可以給 BufferedInputStream 的構造函數傳遞一個值,設置內部使用的緩衝區的大小。(默認爲 8 * 1024B)

InputStream input = new BufferefInputStream(new FileInputSteam("c:data\\text.txt"), 8 * 1024);

這個樣例設置了 8KB 的緩衝區。最好把緩衝區設置成爲 1024 字節的整數倍,這樣能夠更好的利用內置緩衝區的磁盤。

除了能夠爲輸入流提供緩衝區外,其餘方面基本和 InputStream 類似。


BufferedOutputStream

與 BufferedInputSream 類似,BufferOutputStream 可以爲輸出流提供緩衝區。可以構造一個使用默認大小的緩衝區的 BufferedOutputStream。

緩衝區默認大小
OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\text.txt"));
自定義緩衝區大小
OutputStream output = new BufferedOutputStream(new FileOutputStream("c:\\data\\text.txt"), 8*1024);

DataInputStream

DataInputStream 可以使你從輸入流中讀取 Java 基本類型數據,而不必每次讀取字節數據。你可以把 InputStream 包裝到 DataInputStream 中,然後就可以從輸入流中讀取基本類型數據了:

DataInputStream input= new DataInputStream(new FileInputStream("text.data"));
int aByte = input.read();
int aInt = input.readInt();
int aFloat = input.readFloat();
int aDouble = input.readDouble();
input.close();

當你要讀取的數據中包含了 int、long、float、doubule 這樣的基本類型變量時,DataInputStream 可以很方便的處理這些數據。


DataOutputStream

DataOutputStream 可以往輸出流中寫入 Java 基本類型數據:

DataOutputStream output = new DataOutputStream(new FileOutputStream("text.data"));
output.write(123);

其他方面和 DataInputStream 類似。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章