2017-03-31 79 views
0

我想下载多个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(); 

任何帮助将不胜感激。

+0

你就不能下载的所有文件,并提取它们,然后作出一个大拉链了出来? –

+0

'https:// test12.zip'无效。你的问题不清楚。你是否要求'a.zip'和'b.zip'作为一个单独的文件下载,比如'ab.zip'?你不能那样做。你不能下载不存在的东西。服务器必须有一个预先存在的zip文件,其中包含所有内容。您必须单独下载它们并将它们组合到单个存档中。 –

回答

0

的ZIP文件由两个部分组成:第一压缩文件中的条目(文件名,属性和数据),并在该文件的末尾有包含所有条目的列表的中央目录,再以文件名和属性。

因此,您不能直接组合或连接zip文件。在Java中,您只能对下载的zip文件进行即时解压缩(不将它们存储在文件系统中),并且同时使用解压缩的内容创建新的组合ZIP文件:

首先创建ZipOutputStream为您想要创建的zip文件。

然后用每个下载的InputStream,并用ZipInputStream使用它。 遍历每个ZipInputStream和每个条目的所有条目创建的ZipOutputStream一个相同的新条目,然后从ZipInputStream内容复制到ZipOutputStream

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

+0

感谢您的答复。我会试试这个。 – sparrow

相关问题