当前位置: 首页 > 知识库问答 >
问题:

支持Deflate64的Java压缩库

颜修为
2023-03-14

寻找Apache Commons Compress的替代压缩java库(https://Commons.Apache.org/proper/commons-compress/)。当试图读取使用“enhanced_deflated”(即deflate64)压缩的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();
}

下面是堆栈跟踪的相关部分:

unsupportedZipFeatureException:在org.apache.commons.compress.archivers.zip.ziptil.checkRequestedFeatures(ziptil.zip.zipfile.getInputStream(zipfile.java:404)(zippingaround.doRecurseZip(zippingaround.java:23)中,在org.apache.commons.compress.archivers.zip.ziptil.357)项test.docx中使用了不支持的功能方法“enhanced_deflated”

有没有人知道另一个zip库可以取代Commons Compress,或者可能与之配合使用deflate64压缩方法?

共有1个答案

司寇阳曦
2023-03-14

2018年2月,Apache发布了CompressV1.16,其中包括对enhanced_deflated的支持,即。deflate64。我需要这种支持,发现它似乎起作用了。

 类似资料:
  • 现状 & 痛点 对于Seata而言,是通过记录DML操作的前后的数据进行用于后续可能的回滚操作的,并且把这些数据报错到数据库的一个blob的字段里面。对于批量插入,更新,删除等操作,其影响的行数可能会比较多,拼接成一个大的字段插入到数据库,可能会带来以下问题: 超出数据库单次操作的最大写入限制(比如MySQL的max_allowed_package参数); 较大的数据量带来的网络IO和数据库磁盘I

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭

  • 问题内容: 我查看了JDK和Apache压缩库随附的默认Zip库,由于以下三个原因,我对它们不满意: 它们太臃肿了,API设计也不好。我必须写50行锅炉板字节数组输出,压缩输入,文件输出流和关闭相关流,捕捉异常和移动字节缓冲区自己?为什么我不能有一个像)和这样的简单API呢? 似乎通过压缩解压缩会破坏文件元数据,并且密码处理会被破坏。 另外,与我从UNIX获得的命令行zip工具相比,我尝试的所有库

  • 使用的字符串: string='hello'+'\r\n'+'world' Java中的预期输出: out.getValue() f.write(Base64.b64Encode(Out.getValue())) F.Close() ByteArrayInputStream(压缩)); InputStreamReader(gis,“UTF-8”));

  • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?