如何从URL下载多个文件作为一个zip文件

时间:2017-03-31 13:35:35

标签: java spring

我想将多个zip文件下载为一个请求的zip文件。 我有像C,https://test12.zip等的zip文件路径。那么如何将这些文件作为一个zip文件下载。我一直在寻找这个。我得到的只是下载多个文件(本地)和压缩文件的示例。这是我尝试下载一个文件。对于多个文件,它将无法正常工作。

URL url = new URL("https://test12.zip");
URLConnection connection = url.openConnection();
InputStream stream = connection.getInputStream();
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());

        int len;
        byte[] buf = new byte[1024];
        while ((len = stream.read(buf)) > 0) {
            outs.write(buf, 0, len);
        }
        outs.close();

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

ZIP文件由两部分组成:首先是压缩文件条目(文件名,属性和数据),文件末尾有一个中心目录,其中包含所有条目的列表,同样具有文件名和属性。

因此,您无法直接组合或连接zip文件。在Java中,您只能动态解压缩下载的zip文件(不将其存储在文件系统中),同时使用解压缩的内容创建新的组合ZIP文件:

首先为您要创建的zip文件创建一个ZipOutputStream

然后使用每次下载的InputStream并将其与ZipInputStream一起使用。 迭代每个ZipInputStream中的所有条目,并为每个条目在ZipOutputStream中创建一个新的相同条目,并将内容从ZipInputStream复制到ZipOutputStream

如何使用ZipInputStream例如:https://stackoverflow.com/a/36648504/150978