维基百科对 ZIP 文件格式有很好的描述 http://en.wikipedia.org/wiki/ZIP_(file_format),但“中央目录”结构让我感到困惑。具体来说是这样的:
这种顺序允许一次创建 ZIP 文件,但通常通过首先在最后读取中央目录来解压缩。
问题在于,即使是中央目录的尾随标头也是可变长度的。那么,如何才能获得要解析的中央目录的开头呢?
(哦,在来这里询问之前,我确实花了一些时间徒劳地查看 APPNOTE.TXT :P)
我的哀悼,阅读维基百科的描述给我一个非常强烈的印象,你需要做大量的猜测+检查工作:
从末尾向后查找 0x06054b50 目录结束标记,向前查找 16 个字节以找到目录开始标记 0x02014b50 的偏移量,并希望就是这样。您可以进行一些健全性检查,例如在目录结束标记后查找注释长度和注释字符串标记,但感觉 Zip 解码器确实有效,因为人们不会将有趣的字符放入 zip 注释、文件名等中向前。无论如何,完全基于维基百科页面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)