压缩的压缩文件夹。 我使用 java.util.Zip-6ren">
gpt4 book ai didi

java - 无法在 scala/java 中解压使用 Windows "Sent to compressed folder"创建的文件

转载 作者:行者123 更新时间:2023-12-01 18:11:49 27 4
gpt4 key购买 nike

我在 Windows 2008 r2 虚拟机上压缩了一堆 IIS 日志文件,方法是在 Windows 资源管理器中选择它们,然后使用发送到 -> 压缩的压缩文件夹。

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

zip4j 返回:线程“main”中出现异常 net.lingala.zip4j.exception.ZipException:未知的压缩方法

commons compress 返回:org.apache.commons.compress.compressors.CompressorException:找不到流签名的压缩器。

java.util.Zip 返回:java.util.zip.ZipException:无效的压缩方法

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

如何使用 JVM 库解压它们?

作为示例,我使用了以下代码:https://stackoverflow.com/a/10634536/832783解压其中一个文件时,它返回了无效的压缩方法异常。

这些是存档中的前 16 个字节: enter image description here

最佳答案

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

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

关于java - 无法在 scala/java 中解压使用 Windows "Sent to compressed folder"创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59431077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com