当前位置: 代码迷 >> Java Web开发 >> java下载图片花屏的有关问题!
  详细解决方案

java下载图片花屏的有关问题!

热度:216   发布时间:2016-04-16 21:49:04.0
【急】java下载图片花屏的问题!!!
代码片段:


is = objConnection.getInputStream();
fos = new FileOutputStream(objNewFile);
byte[] b = new byte[1024 * 20];
int iRead = is.read(b);
int totals = 0;
while (iRead > -1) {
totals += iRead;
fos.write(b, 0, iRead);
        iRead = is.read(b);
}
fos.close();
is.close();


下载图片有时候会出现花屏的问题:



但是不是每次都出,偶尔会出现,请问这个问题如何解决。
------解决思路----------------------
1. 缓存数组 b 有点大
2. 流最后一点字节没有写入文件
------解决思路----------------------
供参考,我抓过10w+图片,全部完整的。。


public static void download(String urlString, String filename,
String savePath) throws Exception {
long folder = Long.parseLong(savePath.split("/")[5]);
if (folder > 20130517) {
return;
}
// 构造URL
URL url = new URL(urlString);
// 打开连接
URLConnection con = url.openConnection();
// 设置请求超时为5s
con.setConnectTimeout(5 * 1000);
// 输入流
InputStream is = con.getInputStream();

// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
File sf = new File(savePath);
if (!sf.exists()) {
sf.mkdirs();
}

OutputStream os = new FileOutputStream(sf.getPath() + "/" + filename);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
}
  相关解决方案