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

问题描述 投票:2回答:1

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

我使用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

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

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

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

这些是归档文件的前16个字节:enter image description here

java unzip zip4j
1个回答
0
投票

根据标题信息(来自帖子的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文件。

© www.soinside.com 2019 - 2024. All rights reserved.