zip - 如何在 zip 文件中找到 "Central Directory"的开头?

标签 zip file-format

Wikipedia has an excellent description of the ZIP file format ,但“中央目录”结构让我感到困惑。具体是这样的:

This ordering allows a ZIP file to be created in one pass, but it is usually decompressed by first reading the central directory at the end.



问题是,即使是中央目录的尾随头也是可变长度的。那么,如何才能获得要解析的中央目录的开头呢?

(哦,在来这里问之前,我确实花了一些时间看 APPNOTE.TXT 白费力气:P)

最佳答案

我的哀悼,阅读维基百科的描述给了我一个非常强烈的印象,你需要做大量的猜测+检查工作:

从末尾向后搜索 0x06054b50 目录结束标记,向前查找 16 个字节以找到目录开始标记 0x02014b50 的偏移量,希望就是这样。你可以做一些完整性检查,比如在目录结束标签之后寻找注释长度和注释字符串标签,但感觉就像 Zip 解码器一样工作,因为人们不会在他们的 zip 注释、文件名等中放入有趣的字符向前。无论如何,完全基于维基百科页面。

关于zip - 如何在 zip 文件中找到 "Central Directory"的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802097/

相关文章:

sqlite - SQLite 是否具有 C API 可以读/写的机器可移植文件格式?

html - 什么是 HTML 页面扩展的类型

android - MP3 文件格式 详细信息

objective-c - 如何在不使用任何外部库的情况下压缩文件?

php - 在 PHP 中提取 ZIP 文件的子文件夹

python - 如何在 Python 中对 "unzip"然后切片并查找列表列表中元素的最大值

iphone - 创建 zip 文件时大量大文件造成泄漏

c# - 如何从可执行文件中确定应用程序子系统

git - 在 MS-Windows 上使用 vim 和 git 的 go 语言源文件中的行结尾

python - 将 ZipFile 对象存储到 Django 数据库中