java – InputStream.bytesRemaining小于应该
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – InputStream.bytesRemaining小于应该,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1484字,纯文字阅读大概需要3分钟。
内容图文
![java – InputStream.bytesRemaining小于应该](/upload/InfoBanner/zyjiaocheng/730/ae977aab32d1461eaa02b50e3b469499.jpg)
我有来自十几个来源的一堆图像,我正在后台线程下载它们.大多数图像都是在没有问题的情况下下载的,但有2个源会导致问题.他们的所有图像都无法加载.
我使用以下代码下载(和存储)图像:
File f=new File(cacheDir, urlHash);
Bitmap bitmap=null;
InputStream is=new URL(url).openStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = BitmapFactory.decodeStream(new FileInputStream(f), null, null);
Utils.CopyStream:
public static void CopyStream(InputStream is, OutputStream os)
{
int counter = 0;
final int buffer_size=1024;
try
{
byte[] bytes=new byte[buffer_size];
for(;;)
{
int count=is.read(bytes, 0, buffer_size);
if(count==-1) {
Log.d("tag", counter + " bytes copied");
break;
}
os.write(bytes, 0, count);
counter += count;
}
}
catch(Exception ex) {
ex.printStackTrace();
}
}
当我尝试下载此图像http://www.zapakatel.cz/static/deal/7193-1057b.jpg而不是失败. BitmapFactory.decodeStream返回NULL.所有我能找到的可能导致问题的是is.bytesRemaining缺少几千字节:162721 vs 179845根据下载的文件大小.当我从该URL手动下载图像并将其上传到其他地方时,一切正常.
知道什么可能导致问题吗?托管此图像的服务器是否有可能在下载完成之前将我切断?这个图像在任何PC甚至在我的iPhone应用程序中加载都很好(我知道这是完全不同的平台,它可能并不重要,我只觉得它很奇怪)
解决方法:
我完全没有使用Android的经验,但这个问题似乎与响应的GZIP编码有关.
您指向的文件将返回并应用GZIP编码. 162721字节是编码数据的大小,179845是解码后的大小,您可以使用任何HTTP检查器进行检查.看起来新的URL(url).openStream()不会自动解码GZIP编码的响应.
内容总结
以上是互联网集市为您收集整理的java – InputStream.bytesRemaining小于应该全部内容,希望文章能够帮你解决java – InputStream.bytesRemaining小于应该所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。