【问题标题】:Java : Unexpected end of ZLIB input stream while attempting to merge split zip filesJava:尝试合并拆分的 zip 文件时 ZLIB 输入流意外结束
【发布时间】:2021-04-22 16:53:51
【问题描述】:

我已拆分 zip 文件,我尝试使用 Java 进行合并。但是我得到了 ZLIB 输入流错误的意外结束。对我做错了什么有什么想法吗?

    File bigZip = new File("bigZip.zip");
    
    List<String> zipList = Arrays.asList("src/14thmayreceipts.zip.001","src/14thmayreceipts.zip.002", "src/14thmayreceipts.zip.003");
    Collections.sort(zipList);


    ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(bigZip));
    for (String entry : zipList) {
        readWriteZip(outputStream, entry);
    }
    
    outputStream.close();

}

private static void readWriteZip(ZipOutputStream out, String fileName) throws IOException, EOFException  {

    File file = new File(fileName);
    ZipInputStream inStream = new ZipInputStream(new FileInputStream(file));
    byte[] buffer = new byte[1024];
    int len = 0;

    for (ZipEntry e; (e = inStream.getNextEntry()) != null; ) {
        out.putNextEntry(e);
        while ((len = inStream.read(buffer)) > 0) {
            out.write(buffer, 0, len);
        }
    }

    inStream.close();

}

【问题讨论】:

  • 使用 OutputStreams 合并文件是个坏主意。您最好将两个文件的 zip 条目读入一个列表并将这些条目写入一个新的 zip 文件
  • 将它们放入列表中?你能举个例子吗?拆分的 zip 文件来自我使用 7zip 拆分的较大 zip 文件。我正在尝试在 java 中再次组合它们。

标签: java zip eofexception zipoutputstream zipinputstream


【解决方案1】:

JDK 的 zip 不支持拆分 zip 文件。此外,在处理拆分 zip 文件时,您不能使用 Input/Outpustreams。而且在合并拆分的 zip 文件时,必须更新 zip 文件中的许多标题。 zip4j 支持这样的功能。示例代码:

ZipFile zipFile = new ZipFile("splitZipFileThatHasToBeMerged.zip");
zipFile.mergeSplitZipFiles("mergedOutputZipFile.zip");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多