有没有人对如何根据文件大小实用快速检查zip文件是否有损有任何想法?理想情况下,检查zip是否已损坏的最佳方法是进行CRC校验,但这可能需要很长时间,尤其是在存在大量zip文件的情况下。我很高兴能够快速进行文件大小或标题检查。
提前致谢。
答案 0 :(得分:6)
DotNetZip是一个免费的开源库,用于处理.NET语言的zip文件,支持CheckZip()方法,可以满足您的需要。您可以选择各种级别的保证。基本级别只检查元数据的一致性。最完整的级别将zip文件完全提取到bitbucket中,以验证实际的压缩数据是否已损坏。
答案 1 :(得分:4)
使用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)
答案 2 :(得分:2)
Section 4.3.7 of this page表示压缩大小是从字节18开始的4个字节。您可以尝试读取它并将其与文件大小进行比较。
但是,我认为检查zip文件是否已损坏几乎没用,原因有两个:
因此,我建议计算CRC以确保检查损坏的保证方法。
答案 3 :(得分:1)
要检查整个存档'确定',您需要提取所有数据(因为CRC,存储在存档中,是通过未压缩数据计算的),即使在此之后,您也无法确定100%它是否已损坏(因为CRC很好,但不保证数据没有改变)。