inputStream的二次使用

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就可以随便虐待了。
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值