.zip 文件中的文件是不是始终被压缩?

Posted

技术标签:

【中文标题】.zip 文件中的文件是不是始终被压缩?【英文标题】:Are files in a .zip file always compressed?.zip 文件中的文件是否始终被压缩? 【发布时间】:2019-04-17 14:45:17 【问题描述】:

在工作中,我正在实现一个可以处理文件的新 Web 服务。规范说我们不应该接受压缩的 .zip 文件。

是否有未压缩的 .zip 文件之类的东西?如果是,您认为使用 Java (1.8) 检测一个的最佳方法是什么?

【问题讨论】:

ZipFile 包。是的,那里有一种未压缩的格式。 ZipEntry.STORED 来自***:“ZIP 允许使用许多不同的方法压缩包含的文件,以及简单地存储文件而不压缩它” 【参考方案1】:

是的,zip 可以解压缩。事实上,早期的.jar 文件只是未压缩的.zip 文件。

ZipEntry 类有getMethod 来获取条目的压缩方法。其中一个选项是STORED(例如,未压缩)。

【讨论】:

谢谢,我不知道这个。我只是对一件棘手的事情感到好奇,zip文件中的每个条目是否都会被存储?我确实这么认为,但我不确定。 @Pistacchio - zip 中的每个条目都有自己的标志,表明它是否以及如何压缩,是的。因此,要禁止“压缩 zip”,您需要检查 zip 中的每个条目以查看其中是否有任何被压缩(嗯,您只需要检查每个条目,直到找到已压缩的条目)。在绝大多数情况下,您可能会发现它们都是使用相同的算法压缩的,或者都是未压缩的,但格式允许每个条目的压缩有所不同。【参考方案2】:

zip 只是一种容器格式,它可以保存许多可能类型的压缩和未压缩条目。

文件通常是deflated,这意味着它们是经过压缩的。其他的只是stored,这意味着它们是未压缩的。

【讨论】:

以上是关于.zip 文件中的文件是不是始终被压缩?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ssis 解压缩文件夹中的多个文件

分卷压缩文件内容可以被检测到吗

linux解压带密码的zip的命令是啥

如何在不解压缩的情况下列出 zip 存档中的文件?

用于 gzip 和 zip 二进制文件的压缩是不是兼容?

Ionic Zip 密码设置在 azure blob 存储中,并为 zip 文件夹而不是文件设置最佳压缩