InputStream类的available()方法获取流的长度问题

InputStream类的available()方法


我们上传文件时经常会用到available来读取字节,能知道有多少个字节需要读取,这个方法从本地文件读取数据时一般不会出现问题,但是通过网路传输就会出现图片传输不完整的情况,因为网络通讯是间断性的一串字节往往分几批进行发送。本地程序调用available()方法有时得到0,这可能是对方还没有响应,也可能是对方已经响应了,但是数据还没有送达本地。对方发送了9000个字节给你,也许分成3批到达,这你就要调用3次available()方法才能将数据总数全部得到。

如下图所示:



传输过来字节的总长度是97072,但是instreams.available() 方法只获取了8008,这样会造成文件传输不完整。


我的解决方法是:1.把resEntity.getContentLength()当作参数直接传输过去。

2.把图片下载到本地然后再上传






猜你喜欢

转载自blog.csdn.net/xiaolongfight/article/details/79801934
今日推荐