维基百科对ZIP文件格式有很好的描述,但"中心目录"结构让我感到困惑.特别是这个:
这种排序允许在一次传递中创建ZIP文件,但通常通过首先读取最后的中心目录来解压缩.
问题是即使中央目录的尾部标题也是可变长度.那么,有人可以得到解析中心目录的开头吗?
(哦,我确实花了一些时间看着APPNOTE.TXT,然后来到这里询问:P)
sar*_*old 15
我的哀悼,阅读维基百科的描述给了我非常强烈的印象,你需要做相当多的猜测+检查工作:
从0x06054b50目录结束标记的末尾向后搜索,向前看16个字节以找到目标开始标记0x02014b50的偏移量,并希望是它.您可以进行一些健全性检查,例如在目录结束标记之后查找注释长度和注释字符串标记,但它确实感觉Zip解码器有效,因为人们不会将有趣的字符放入其zip注释,文件名等等向前.完全基于维基百科页面,无论如何.
我前段时间正在实现zip存档支持,我搜索最后几千字节的中央目录签名结束(4个字节).这非常有效,直到有人将50kb文本放入评论中(这不太可能发生.绝对肯定,你可以搜索最后64kb +几个字节,因为评论大小是16位).之后,我查找中央目录定位器的zip64端,由于它具有固定的结构,因此更容易.
| 归档时间: |
|
| 查看次数: |
7427 次 |
| 最近记录: |