如何从URL下载多个文件作为一个zip文件
我想下载多个zip文件作为一个zip文件的请求。 我有像C,https://test12.zip等zip文件路径。所以我怎样才能下载这些文件作为一个zip文件。我一直在寻找这一点。我得到的只是下载多个文件(本地)并压缩它们的例子。这是我试图下载一个文件。对于多个文件它不会工作。如何从URL下载多个文件作为一个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();
任何帮助将不胜感激。
的ZIP文件由两个部分组成:第一压缩文件中的条目(文件名,属性和数据),并在该文件的末尾有包含所有条目的列表的中央目录,再以文件名和属性。
因此,您不能直接组合或连接zip文件。在Java中,您只能对下载的zip文件进行即时解压缩(不将它们存储在文件系统中),并且同时使用解压缩的内容创建新的组合ZIP文件:
首先创建ZipOutputStream
为您想要创建的zip文件。
然后用每个下载的InputStream
,并用ZipInputStream
使用它。 遍历每个ZipInputStream
和每个条目的所有条目创建的ZipOutputStream
一个相同的新条目,然后从ZipInputStream
内容复制到ZipOutputStream
。
如何使用ZipInputStream
看到例如:https://stackoverflow.com/a/36648504/150978
感谢您的答复。我会试试这个。 – sparrow
你就不能下载的所有文件,并提取它们,然后作出一个大拉链了出来? –
'https:// test12.zip'无效。你的问题不清楚。你是否要求'a.zip'和'b.zip'作为一个单独的文件下载,比如'ab.zip'?你不能那样做。你不能下载不存在的东西。服务器必须有一个预先存在的zip文件,其中包含所有内容。您必须单独下载它们并将它们组合到单个存档中。 –