1. 程式人生 > >Java IO: ByteArray和Filter

Java IO: ByteArray和Filter

作者: Jakob Jenkov 譯者: 李璟([email protected])

本小節會簡要概括Java IO中位元組陣列與過濾器的輸入輸出流,主要涉及以下4個型別的流:ByteArrayInputStream,ByteArrayOutputStream,FilterInputStream,FilterOutputStream。請注意,為了清晰,這裡忽略了必要的異常處理。想了解更多異常處理的資訊,請參考Java IO異常處理。

ByteArrayInputStream

原文連結

ByteArrayInputStream允許你從位元組陣列中讀取位元組流資料,程式碼如下:

byte[] bytes = ... //get byte array from somewhere.

InputStream input = new ByteArrayInputStream(bytes);

int data = input.read();

while(data != -1) {

    //do something with data

    data = input.read();

}

input.close();

如果資料儲存在陣列中,ByteArrayInputStream可以很方便地讀取資料。如果你有一個InputStream變數,又想從陣列中讀取資料呢?很簡單,只需要把位元組陣列傳遞給ByteArrayInputStream的建構函式,在把這個ByteArrayInputStream賦值給InputStream變數就可以了(譯者注:InputStream是所有位元組輸入流流的基類,Reader是所有字元輸入流的基類,OutputStream與Writer同理)。

ByteArrayOutputStream

原文連結

ByteArrayOutputStream允許你以陣列的形式獲取寫入到該輸出流中的資料,程式碼如下:

ByteArrayOutputStream output = new ByteArrayOutputStream();

//write data to output stream

byte[] bytes = output.toByteArray();

FilterInputStream

原文連結

FilterInputStream是實現自定義過濾輸入流的基類,基本上它僅僅只是覆蓋了InputStream中的所有方法。

就我自己而言,我沒發現這個類明顯的用途。除了建構函式取一個InputStream變數作為引數之外,我沒看到FilterInputStream任何對InputStream新增或者修改的地方。如果你選擇繼承FilterInputStream實現自定義的類,同樣也可以直接繼承自InputStream從而避免額外的類層級結構。

FilterOutputStream

原文連結

內容同FilterInputStream,不再贅述。