Java 支持 Deflate64 的压缩库
Java Compression Library To Support Deflate64
正在寻找 Apache Commons Compress (https://commons.apache.org/proper/commons-compress/) 的替代压缩 java 库。 Commons Compress 在尝试读取使用 "ENHANCED_DEFLATED"(deflate64)压缩的 zip 条目时抛出错误。这是抛出异常的示例摘录。
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.UnsupportedZipFeatureException: unsupported feature method 'ENHANCED_DEFLATED' used in entry test.docx
at org.apache.commons.compress.archivers.zip.ZipUtil.checkRequestedFeatures(ZipUtil.java:357)
at org.apache.commons.compress.archivers.zip.ZipFile.getInputStream(ZipFile.java:404)
at ZippingAround.doRecurseZip(ZippingAround.java:23)
有谁知道另一个可以替代 Commons Compress 的 zip 库,或者可能与它结合使用 deflate64 压缩方法?
zlib 在 contrib/infback9 目录中有一个 Deflate64 解压器(在 C 中)。您需要将其集成到您的 zip 解码器中。
7zip-javabinding 库使用 JNI 封装支持 Deflate64 的 7zip。它提供特定于平台的解决方案,或者如果您愿意,它们还提供 all-platforms
解决方案。
这些库在 Maven Central 上可用。
如果有人找到了一个纯粹的 Java 解决方案,请 post 另一个答案! :-)
2018 年 2 月,Apache 发布了 Compress v1.16,其中包括对 ENHANCED_DEFLATED
的支持,即。 Deflate64
。我需要这种支持并发现它似乎有效。
正在寻找 Apache Commons Compress (https://commons.apache.org/proper/commons-compress/) 的替代压缩 java 库。 Commons Compress 在尝试读取使用 "ENHANCED_DEFLATED"(deflate64)压缩的 zip 条目时抛出错误。这是抛出异常的示例摘录。
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.UnsupportedZipFeatureException: unsupported feature method 'ENHANCED_DEFLATED' used in entry test.docx at org.apache.commons.compress.archivers.zip.ZipUtil.checkRequestedFeatures(ZipUtil.java:357) at org.apache.commons.compress.archivers.zip.ZipFile.getInputStream(ZipFile.java:404) at ZippingAround.doRecurseZip(ZippingAround.java:23)
有谁知道另一个可以替代 Commons Compress 的 zip 库,或者可能与它结合使用 deflate64 压缩方法?
zlib 在 contrib/infback9 目录中有一个 Deflate64 解压器(在 C 中)。您需要将其集成到您的 zip 解码器中。
7zip-javabinding 库使用 JNI 封装支持 Deflate64 的 7zip。它提供特定于平台的解决方案,或者如果您愿意,它们还提供 all-platforms
解决方案。
这些库在 Maven Central 上可用。
如果有人找到了一个纯粹的 Java 解决方案,请 post 另一个答案! :-)
2018 年 2 月,Apache 发布了 Compress v1.16,其中包括对 ENHANCED_DEFLATED
的支持,即。 Deflate64
。我需要这种支持并发现它似乎有效。