閱讀331 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java IO: ByteArray和Filter

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

ByteArrayInputStream

原文鏈接

ByteArrayInputStream允許你從字節數組中讀取字節流數據,代碼如下:

01 byte[] bytes = ... //get byte array from somewhere.
02  
03 InputStream input = new ByteArrayInputStream(bytes);
04  
05 int data = input.read();
06  
07 while(data != -1) {
08  
09     //do something with data
10  
11     data = input.read();
12  
13 }
14  
15 input.close();

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

ByteArrayOutputStream

原文鏈接

ByteArrayOutputStream允許你以數組的形式獲取寫入到該輸出流中的數據,代碼如下:

1 ByteArrayOutputStream output = new ByteArrayOutputStream();
2  
3 //write data to output stream
4  
5 byte[] bytes = output.toByteArray();

FilterInputStream

原文鏈接

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

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

FilterOutputStream

原文鏈接

內容同FilterInputStream,不再贅述。

最後更新:2017-05-23 11:31:54

  上一篇:go  Java Reflection(八):注解
  下一篇:go  Java中的狀態模式實例教程