无法解压缩在Scala / java中使用Windows“发送到压缩文件夹”创建的文件

我在Windows 2008 r2 vm上通过在Windows资源管理器中选择一堆IIS日志文件,然后使用“发送到->压缩的压缩”文件夹来压缩它们。

我使用java.util.ZipFile,zip4j和apache commons compress库在scala中编写了不同的程序。

zip4j返回:Exception in thread "main" net.lingala.zip4j.exception.ZipException: Unknown compression method

常见压缩返回:org.apache.commons.compress.compressors.CompressorException: No Compressor found for the stream signature.

java.util.Zip返回:java.util.zip.ZipException: invalid compression method

这些zip文件有什么特别之处,以至于这些方法都无法解压缩它们?

如何使用JVM库解压缩它们?

作为示例,我使用以下代码:https://stackoverflow.com/a/10634536/832783解压缩其中一个文件,并返回invalid compression method异常。

这些是存档中的前16个字节:

无法解压缩在Scala / java中使用Windows“发送到压缩文件夹”创建的文件

qiannianqimeng 回答:无法解压缩在Scala / java中使用Windows“发送到压缩文件夹”创建的文件

根据标题信息(来自帖子的16个字节),使用Deflate64对zip文件中的此项进行了加密。 Deflate64不要与Deflate压缩混淆。 Deflate64是PKWare的商标(PKWare是zip格式的维护者),并且是Deflate压缩算法的增强版本。根据超级用户上的this question和github上的this PR,如果文件大小大于2GB,Windows将使用Deflate64。 zip4j和jdk的zip实用程序尚不支持Deflate64,但是commons-compress版本1.16支持Deflate64。您可能可以尝试使用最新版本的commons-compress解压缩zip文件。

编辑:或者,如果您有此选择,则可以尝试使用其他工具(7zip,zip4j等)创建zip文件。然后,您不必处理Deflate64,它可使您的zip文件与其他工具兼容。

本文链接:https://www.f2er.com/2883355.html

大家都在问