我正在使用Java从Web服务器下载zip文件但不知何故我在每个文件中丢失大约2kb。我不知道为什么因为相同的代码可以与其他格式一起使用,例如文本,mp3和额外的格式。 任何帮助表示赞赏? 这是我的代码。
public void download_zip_file(String save_to) {
try {
URLConnection conn = this.url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("content-type", "binary/data");
InputStream in = conn.getInputStream();
FileOutputStream out = new FileOutputStream(save_to + "tmp.zip");
byte[] b = new byte[1024];
int count;
while ((count = in.read(b)) > 0) {
out.write(b, 0, count);
}
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:3)
应该如下:
while ((count = in.read(b)) >= 0)
in.read
可以返回0
。
答案 1 :(得分:2)
在“out.flush()
”部分之后和while ((count = in.read(b)) > 0) {...}
之前放置out.close()
。
答案 2 :(得分:0)
尝试删除这些行:
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestProperty("content-type", "binary/data");
答案 3 :(得分:0)
我遇到了从http下载zip文件的问题,原来我的下载包含了http头文件,但是这使我的文件变得更小而不是更小,所以你可能没有这个问题。
作为旁注,您可以考虑使用Apache Commons Net下载相关应用 - 这真的很棒。
答案 4 :(得分:0)
几年前,我记得遇到旧版Tomcat(内存5.5.25)的问题会导致大量下载被截断。我们通过升级到5.5.27来解决这个问题。我还记得在早期的Tomcat 6.0版本中发现并修复了同样的问题。
如果这会响铃,请查看Tomcat更改日志。
答案 5 :(得分:0)
只有zip文件,对吧?很奇怪。它来自任何服务器,还是只是这个?如果重命名文件(更改扩展名),您会遇到同样的问题吗?缺少哪些字节?你确定它是最后2K字节而不是中间/等等的一些块吗?