2014-01-24 74 views
0

嗨,我用下面的代碼將我的對象轉換爲輸入流。但我其實想將我的對象轉換爲BufferedInputStream。我應該對我的代碼做些什麼改變?將對象轉換爲JAVA中的BuffredInputStream

   ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      ObjectOutputStream oos = new ObjectOutputStream(baos); 
      oos.writeObject(obj); 
      oos.flush(); 
      oos.close(); 
      InputStream is = new ByteArrayInputStream(baos.toByteArray()); 
+1

只需在'BufferedInputStream'中包裝'is'? –

+0

Java文檔:http://docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html –

回答

0

BufferedInputStream發生在構造函數中的InputStream,這樣你就可以做到這一點:

BufferedInputStream bIn = new BufferedInputStream(is); 

一個BufferedInputStream爲添加了功能,另一種輸入流,即緩衝輸入能力,以支持標記和重置方法。當創建BufferedInputStream時,會創建一個內部緩衝區數組。當流中的字節被讀取或跳過時,內部緩衝區將根據需要從所包含的輸入流中重新填充,一次處理多個字節。標記操作會記住輸入流中的一個點,並且復位操作將導致從最近的標記操作開始重新讀取所有讀取的字節,然後纔會從所包含的輸入流中獲取新字節。

0

總結這樣說:

new BufferedInputStream(new ByteArrayInputStream(baos.toByteArray())) 
0

你確定你需要的皈依?

BufferedInputStream用於緩衝字節以減少外部I/O操作的調用次數。由於ByteArrayInputStream已將其數據保存在一個字節數組中,因此將其包裝在BufferedInputStream中不會減少I/O操作的調用(不存在),但只會增加將數組中的字節複製到緩衝區的開銷。

+0

問題是,他如何包裝它,而不是如果它是一個很好的解決方案。 –