4

寻找 Apache Commons Compress ( https://commons.apache.org/proper/commons-compress/ ) 的替代压缩 java 库。尝试读取使用 deflate64 的“ENHANCED_DEFLATED”压缩的 zip 条目时,Commons Compress 会引发错误。这是引发异常的示例摘录。

public void doRecurseZip(File inputFile)
        throws IOException{
    ZipFile srcZip = null;
    srcZip = new ZipFile(inputFile);

    final Enumeration<ZipArchiveEntry> entries = srcZip.getEntries();
    while (entries.hasMoreElements()) {
        final ZipArchiveEntry srcEntry = entries.nextElement();
        String entryFilename = srcEntry.getName();
        String entryMimetype = "application/octet-stream";
        boolean canRead = srcZip.canReadEntryData(srcEntry);
        InputStream zipStream = srcZip.getInputStream(srcEntry);
        zipStream.close();
    }
    srcZip.close();
}

这是堆栈跟踪的相关部分:

在org.apache.commons.compress.archivers.zip.ZipFile.getInputStream(ZipFile.java:404) 在ZippingAround.doRecurseZip(ZippingAround.java:23)

有谁知道另一个可以替代 Commons Compress 的 zip 库,或者可能与它一起用于 deflate64 压缩方法?

4

3 回答 3

1

2018 年 2 月,Apache 发布了Compress v1.16,其中包括对 .ie 的支持ENHANCED_DEFLATEDDeflate64. 我需要这种支持,并发现它似乎有效。

于 2018-04-16T04:20:48.477 回答
0

7zip-javabinding库使用 JNI 包装支持 Deflate64 的 7zip 。它提供特定于平台的解决方案,或者如果您愿意,他们也提供all-platforms解决方案。

这些库在Maven Central上可用。

如果有人找到纯 Java 解决方案,请发布另一个答案!:-)

于 2016-12-18T05:32:57.407 回答
0

zlib在 contrib/infback9 目录中有一个 Deflate64 解压器(C 语言)。您需要将其集成到您的 zip 解码器中。

于 2015-12-17T02:22:59.760 回答