【急】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();
}