如何调试.zip生成器算法?

时间:2019-01-23 09:26:57

标签: zip zipfile

我正在尝试遵循以下规范实现最小版本的.zip文件生成:https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

我实际上并不需要压缩,我只需要一种方法就可以将一堆文件串在一起,成为一种广泛采用的存档格式,并且能够在流出zip时流进文件数据。

到目前为止,我取得了部分成功,内置zip提取器的7-zip和Windows可以很好地提取它们,内置zip提取器的winrar和macos给我损坏的存档错误。

据我所知,我一辈子都找不到实际的问题。.zip是按规范100%构建的,但规范是一堵大文本墙,扑朔迷离从一个zip文件版本更改为下一个zip文件版本,以及使用新功能的旧属性令人困惑。

有人知道有一个提取工具可以给我带来比“存档已损坏”更具体的错误吗?

也许是一个zip生成实用程序,我可以在其中选择构建zip文件的所有不同方式,以便可以逐字节比较结果?

1 个答案:

答案 0 :(得分:0)

  

有人知道有一个提取工具会给我带来比“存档已损坏”更具体的错误吗?

unzipada工具@ Zip-Ada project可以做到这一点

Testing archive ko.zip

raised ZIP.ARCHIVE_CORRUPTED : Bad (or no) end-of-central-directory
[C:\Ada\za\unzipada.exe]
Zip.Find_First_Offset at zip.adb:589
Unzip.Extract at unzip.adb:667
Unzipada at unzipada.adb:259

通过浏览代码(如zip.adb,第589行),可以缩小损坏的存档问题的范围。要构建该工具,请下载源文件并遵循readme.txt文件。还有用于Windows的预构建二进制文件。