如何在Java中解压缩分割卷zip?

我需要重新组装一个100个部分的zip文件并提取内容。 我尝试在输入流中简单地将zip卷连接在一起,但这不起作用。 任何建议,将不胜感激。

谢谢。

这是您可以从中开始的代码。 它从多卷zip存档中提取单个文件条目:

 package org.test.zip; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.SequenceInputStream; import java.util.Arrays; import java.util.Collections; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class Main { public static void main(String[] args) throws IOException { ZipInputStream is = new ZipInputStream(new SequenceInputStream(Collections.enumeration( Arrays.asList(new FileInputStream("test.zip.001"), new FileInputStream("test.zip.002"), new FileInputStream("test.zip.003"))))); try { for(ZipEntry entry = null; (entry = is.getNextEntry()) != null; ) { OutputStream os = new BufferedOutputStream(new FileOutputStream(entry.getName())); try { final int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; for(int readBytes = -1; (readBytes = is.read(buffer, 0, bufferSize)) > -1; ) { os.write(buffer, 0, readBytes); } os.flush(); } finally { os.close(); } } } finally { is.close(); } } } 

只是一个注释,使其更具动态 – 100%基于下面的mijer代码。

  private void CombineFiles (String[] files) throws FileNotFoundException, IOException { Vector v = new Vector(files.length); for (int x = 0; x < files.length; x++) v.add(new FileInputStream(inputDirectory + files[x])); Enumeration e = v.elements(); SequenceInputStream sequenceInputStream = new SequenceInputStream(e); ZipInputStream is = new ZipInputStream(sequenceInputStream); try { for (ZipEntry entry = null; (entry = is.getNextEntry()) != null;) { OutputStream os = new BufferedOutputStream(new FileOutputStream(entry.getName())); try { final int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; for (int readBytes = -1; (readBytes = is.read(buffer, 0, bufferSize)) > -1;) { os.write(buffer, 0, readBytes); } os.flush(); } finally { os.close(); } } } finally { is.close(); } }