更正损坏的ZIP文件标题

时间:2010-08-16 01:20:55

标签: .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. 其他一些组合。

1 个答案:

答案 0 :(得分:2)

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