我想在解压缩之前检查zip文件是否已损坏。如果手动打开损坏的zip文件,则会引发错误。如何在c#中完成,这样如果zip被破坏,将抛出异常。
P.s在.net 4.5中是可能的。但我需要它在3.5
由于
答案 0 :(得分:4)
DotNetZip是一个免费的开源库,用于处理.NET语言的zip文件,支持CheckZip()方法,可以满足您的需要。您可以选择各种级别的保证。基本级别只检查元数据的一致性。最完整的级别将zip文件完全提取到bitbucket中,以验证实际的压缩数据是否已损坏。
更新:
Section 4.3.7 of this page表示压缩大小是从字节18开始的4个字节。您可以尝试读取它并将其与文件大小进行比较。
但是,我认为检查zip文件是否已损坏几乎没用,原因有两个:
某些zip文件包含的字节数多于zip部分。对于 例如,self-extracting archives还有一个可执行部分 它们仍然是有效的拉链。
文件可能会损坏而不会更改其大小。所以,我建议
为保证的检查方法计算CRC
损坏。