331
阿裏雲
技術社區[雲棲]
Java IO: ByteArray和Filter
本小節會簡要概括Java IO中字節數組與過濾器的輸入輸出流,主要涉及以下4個類型的流:ByteArrayInputStream,ByteArrayOutputStream,FilterInputStream,FilterOutputStream。請注意,為了清晰,這裏忽略了必要的異常處理。想了解更多異常處理的信息,請參考Java IO異常處理。
ByteArrayInputStream
原文鏈接
ByteArrayInputStream允許你從字節數組中讀取字節流數據,代碼如下:
01 |
byte [] bytes = ... //get byte array from somewhere.
|
03 |
InputStream input = new ByteArrayInputStream(bytes);
|
05 |
int data = input.read();
|
09 |
//do something with data
|
如果數據存儲在數組中,ByteArrayInputStream可以很方便地讀取數據。如果你有一個InputStream變量,又想從數組中讀取數據呢?很簡單,隻需要把字節數組傳遞給ByteArrayInputStream的構造函數,在把這個ByteArrayInputStream賦值給InputStream變量就可以了(譯者注:InputStream是所有字節輸入流流的基類,Reader是所有字符輸入流的基類,OutputStream與Writer同理)。
ByteArrayOutputStream
原文鏈接
ByteArrayOutputStream允許你以數組的形式獲取寫入到該輸出流中的數據,代碼如下:
1 |
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
3 |
//write data to output stream |
5 |
byte [] bytes = output.toByteArray();
|
FilterInputStream
原文鏈接
FilterInputStream是實現自定義過濾輸入流的基類,基本上它僅僅隻是覆蓋了InputStream中的所有方法。
就我自己而言,我沒發現這個類明顯的用途。除了構造函數取一個InputStream變量作為參數之外,我沒看到FilterInputStream任何對InputStream新增或者修改的地方。如果你選擇繼承FilterInputStream實現自定義的類,同樣也可以直接繼承自InputStream從而避免額外的類層級結構。
FilterOutputStream
原文鏈接
內容同FilterInputStream,不再贅述。
最後更新:2017-05-23 11:31:54