更正损坏的ZIP文件标题

Pau*_*rry 7 .net binary zip

我以前一直在使用Chilkat Zip .Net从我的应用程序生成备份文件,但在遇到组件问题后,转移到Xceed Zip .Net以获得相同的功能.

如果您使用Chilkat生成的其中一个Zips并尝试使用Xceed,7Zip,WinZip进行提取,则会失败.

如果您使用相同的文件并使用Chilkat,Windows Zip,WinRar提取,那么该文件提取就好了.

在维基百科上阅读有关WinZip格式的内容,我调查了中央目录和本地文件头,看起来Chilkat组件已经错误地编写了中央目录记录文件大小.如果您使用FRHed之类的东西来编辑中央记录并使文件大小与本地标题大小相同,那么一切都会正确提取.

你会推荐我做什么?

  1. 使用Chilkat库编写一个小实用程序来解压缩Zip,然后使用Xceed Library重新压缩
  2. 阅读Zip文件,查找必要的Zip标记(如规范中所定义),然后更正中央标题.
  3. 其他一些组合.

Nic*_*sky 2

这取决于您的程序生成的备份数量。也许,从程序或手动解压缩/重新压缩它们会更容易。但是,如果有很多文件,更好的方法是修复中央目录记录字段 - 您应该编写代码,其中 1)搜索中央目录;2) 对于每条记录,转到本地文件头存储的位置,并读取文件大小;3)返回中央目录并在那里写入有效的文件大小;4) 谨防大文件(如果有)- 文件大小>4Gb 会写入扩展名中。