使用java下载zip文件?

时间:2010-04-16 21:29:52

标签: java download zip io

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

6 个答案:

答案 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字节而不是中间/等等的一些块吗?