使用java下载zip文件?

我正在使用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(); } } 

它应该如下:

 while ((count = in.read(b)) >= 0) 

in.read可以返回0

在“ while ((count = in.read(b)) > 0) {...} ”部分之后和out.close()之前放置一个out.flush() out.close()

尝试删除这些行:

 conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestProperty("content-type", "binary/data"); 

我有一个从http下载zip文件的问题,结果certificate我的下载包括他们开头的http标题,但这使我的文件更大而不是更小,所以你可能没有这个问题。

作为旁注,您可以考虑使用Apache Commons Net下载相关应用程序 – 它真的很棒。

几年前,我记得遇到过旧版Tomcat(内存5.5.25)的问题会导致大量下载被截断。 我们通过升级到5.5.27来解决这个问题。 我还记得在早期的Tomcat 6.0版本中发现并修复了同样的问题。

如果这会响铃,请查看Tomcat更改日志。

只有zip文件,呵呵? 很奇怪。 它来自任何服务器,还是只是这个? 如果重命名文件(更改扩展名),是否会出现同样的问题? 缺少哪些字节? 你确定它是最后2K字节而不是中间/等等的一些块吗?