ByteArrayOutputStream


有時候我們需要對同一個InputStream對象使用多次。比如,客戶端從服務器獲取數據 ,利用HttpURLConnection的getInputStream()方法獲得Stream對象,這時既要把數據顯示到前台(第一次讀取),又想把數據寫進文件緩存到本地(第二次讀取)。

但第一次讀取InputStream對象后,第二次再讀取時可能已經到Stream的結尾了(EOFException)或者Stream已經close掉了。

而InputStream對象本身不能復制,因為它沒有實現Cloneable接口。此時,可以先把InputStream轉化成ByteArrayOutputStream,后面要使用InputStream對象時,再從ByteArrayOutputStream轉化回來就好了。代碼實現如下:

InputStream input =  httpconn.getInputStream();
                 
ByteArrayOutputStream baos =  new  ByteArrayOutputStream();
byte [] buffer =  new  byte [ 1024 ];
int  len;
while  ((len = input.read(buffer)) > - 1  ) {
     baos.write(buffer,  0 , len);
}
baos.flush();             
 
InputStream stream1 =  new  ByteArrayInputStream(baos.toByteArray());
 
//TODO:顯示到前台
 
InputStream stream2 =  new  ByteArrayInputStream(baos.toByteArray());
 
//TODO:本地緩存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM