欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

inputStream的二次使用

程序员文章站 2024-02-04 08:34:58
...

nputStream会保存一个位置:Stream.Position,表示当前流中的位置,每次读取都是从这个位置开始,并且读取完成之后会把这个位置设置为最后读取的位置,因此第一次读整个Stream,Position到了末尾或者close了,第二次就读不到内容。此时,可以先把InputStream转化成ByteArrayOutputStream,后面要使用InputStream对象时,再从ByteArrayOutputStream转化回来就好了.

例子如下:
 

InputStream input =  response.body().byteStream();
                  
ByteArrayOutputStream baos = new ByteArrayOutputStream();  


byte[] buffer = new byte[1024];
  
int len=-1; 
 
while ((len = input.read(buffer)) = -1 ) {  
    baos.write(buffer, 0, len);  
}
  
baos.flush();    


input.close            
  
InputStream input1 = new ByteArrayInputStream(baos.toByteArray());  
   
InputStream input2 = new ByteArrayInputStream(baos.toByteArray());



input1和input2就可以随便虐待了。
 

 

相关标签: inputStream