有没有人知道如何根据文件大小务实地快速检查 zip 文件是否损坏?理想情况下,检查 zip 是否损坏的最佳方法是进行 CRC 检查,但这可能需要很长时间,尤其是在有很多大 zip 文件的情况下。我很高兴能够快速进行文件大小或标题检查。
提前致谢。
有没有人知道如何根据文件大小务实地快速检查 zip 文件是否损坏?理想情况下,检查 zip 是否损坏的最佳方法是进行 CRC 检查,但这可能需要很长时间,尤其是在有很多大 zip 文件的情况下。我很高兴能够快速进行文件大小或标题检查。
提前致谢。
用于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)
DotNetZip是一个免费的开源库,用于处理 .NET 语言的 zip 文件,它支持CheckZip()方法,可以满足您的需求。您可以选择各种级别的保证。基本级别只是检查元数据的一致性。最完整的级别将 zip 文件完全提取到 bitbucket 中,以验证实际压缩数据没有损坏。
本页的第 4.3.7 节说压缩后的大小是从第 18 个字节开始的 4 个字节。您可以尝试读取它并将其与文件的大小进行比较。
但是,我认为检查 zip 文件是否损坏几乎没有用,原因有两个:
因此,我建议计算 CRC 以获得有保证的检查损坏的方法。
要“确定”检查整个存档,您需要提取所有数据(因为存储在存档中的 CRC 是根据未压缩数据计算得出的),即使在此之后,您也无法 100% 确定它没有损坏(因为 CRC很好,但不保证数据不会被更改)。
这可能是一个迟到的答案,但如果您在 Windows 命令行上,并且安装了 7zip,只需将其添加到您的系统 PATH 并运行以下命令:
7z t file.zip