13

有没有人知道如何根据文件大小务实地快速检查 zip 文件是否损坏?理想情况下,检查 zip 是否损坏的最佳方法是进行 CRC 检查,但这可能需要很长时间,尤其是在有很多大 zip 文件的情况下。我很高兴能够快速进行文件大小或标题检查。

提前致谢。

4

5 回答 5

17

用于zip -T测试文件是否损坏。示例损坏的文件如下所示:

 zip -T filename.zip
        zip warning: missing end signature--probably not a zip file (did you
        zip warning: remember to use binary mode when you transferred it?)
        zip warning: (if you are trying to read a damaged archive try -F)

zip error: Zip file structure invalid (filename.zip)
于 2017-08-22T07:27:17.983 回答
6

DotNetZip是一个免费的开源库,用于处理 .NET 语言的 zip 文件,它支持CheckZip()方法,可以满足您的需求。您可以选择各种级别的保证。基本级别只是检查元数据的一致性。最完整的级别将 zip 文件完全提取到 bitbucket 中,以验证实际压缩数据没有损坏。

于 2010-10-24T16:15:30.110 回答
5

本页的第 4.3.7 节说压缩后的大小是从第 18 个字节开始的 4 个字节。您可以尝试读取它并将其与文件的大小进行比较。

但是,我认为检查 zip 文件是否损坏几乎没有用,原因有两个:

  1. 一些 zip 文件包含的字节数不仅仅是 zip 部分。例如,自解压档案有一个可执行部分,但它们仍然是有效的 zip。
  2. 该文件可能被损坏而不改变其大小。

因此,我建议计算 CRC 以获得有保证的检查损坏的方法。

于 2010-10-17T18:11:46.757 回答
1

要“确定”检查整个存档,您需要提取所有数据(因为存储在存档中的 CRC 是根据未压缩数据计算得出的),即使在此之后,您也无法 100% 确定它没有损坏(因为 CRC很好,但不保证数据不会被更改)。

于 2010-11-12T17:21:14.803 回答
0

这可能是一个迟到的答案,但如果您在 Windows 命令行上,并且安装了 7zip,只需将其添加到您的系统 PATH 并运行以下命令:

7z t file.zip

于 2022-01-23T16:47:44.843 回答