Compression 如何快速检查zip文件是否损坏?
有人知道如何根据文件大小实用地快速检查zip文件是否损坏吗?理想情况下,检查zip是否损坏的最佳方法是执行CRC检查,但这可能需要很长时间,尤其是在存在大量大型zip文件的情况下。我会很高兴能够做一个快速的文件大小或头检查 提前感谢。表示压缩大小为4字节,从字节18开始。您可以尝试读取它并将其与文件大小进行比较 但是,我认为检查zip文件是否损坏几乎没有用,原因有两个:Compression 如何快速检查zip文件是否损坏?,compression,zip,unzip,corruption,Compression,Zip,Unzip,Corruption,有人知道如何根据文件大小实用地快速检查zip文件是否损坏吗?理想情况下,检查zip是否损坏的最佳方法是执行CRC检查,但这可能需要很长时间,尤其是在存在大量大型zip文件的情况下。我会很高兴能够做一个快速的文件大小或头检查 提前感谢。表示压缩大小为4字节,从字节18开始。您可以尝试读取它并将其与文件大小进行比较 但是,我认为检查zip文件是否损坏几乎没有用,原因有两个: 有些zip文件包含的字节比zip部分多。例如,有一个可执行部分,但它们仍然有效 文件可能会损坏,而不会更改其大小 因此,我建议
因此,我建议计算CRC以保证检查损坏的方法。是一个免费的开源库,用于处理.NET语言中的zip文件,它支持一种您想要的方法。您可以选择提供不同级别的保证。基本级别只是检查元数据的一致性。最完整级别将zip文件完全提取到bitbucket中,以验证实际压缩的数据是否已损坏 要“确定”检查整个归档文件,您需要提取所有数据(因为存储在归档文件中的CRC是对未压缩数据进行计算的),并且,即使在这之后,您也无法100%确保它没有损坏(因为CRC是良好的,但不能保证数据没有被更改).使用
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)
此外,许多zip创建工具会在知道文件长度之前写入头文件,因此这些字节保持为零(大概是为了支持流式传输)。@SimonJ所说的是正确的,但是-从字节18开始的压缩大小是zip文件中单个条目的压缩大小。这不是zip文件的压缩大小。同样,这可能是显而易见的,但值得一提的是:“计算CRC”可以验证文件,只有在知道原始CRC的情况下。我目前正在使用c#完成我的任务,但语言无关紧要。CodePlex已经失效,这些页面现在是“存档”。这可能是相同的代码?非常方便。也可用于区分文件扩展名不可靠的文档和docx文件。