zip - Zip64 'end of central directory locator' 的目的是什么?

标签 zip file-format

Zip64 format ,有一个标题叫做

Zip64 end of central directory locator



包含到中央目录记录的 zip64 结尾的偏移量。为什么在 时需要此记录您可以通过其魔数(Magic Number)搜索“中央目录的 zip64 结尾”记录吗?

编辑:请注意,查找定位器的唯一方法是查找定位器的魔数(Magic Number)。这里的重点是,当您可以直接搜索zip64 end of central directory 时,为什么还要首先搜索带有定位符魔数(Magic Number)的定位符?也通过它的魔数(Magic Number)记录?

最佳答案

直接导航到文件中的字节偏移量比搜索魔数(Magic Number)要快得多。此外,无法保证不会在数据中的其他地方找到魔数(Magic Number),如果它从无效但“假定正确”的位置开始读取,则可能导致实现读取不正确的数据。

在我自己围绕这个做了一些额外的实现之后,我认为最重要的是要注意“特殊用途的数据可能驻留在 zip64 可扩展数据扇区字段中”(在中央目录记录的 Zip64 结尾之后)。可能存在多个这些字段,每个字段以 2 个字节的 header ID 开头,后跟 4 个字节的数据大小 - 后跟实际的“特殊用途数据” - 允许多个 2^32 字节(4 GB)的数据.虽然这看起来很极端,但这样做肯定会导致需要在定位器和“中央目录记录的 Zip64 结尾”之间跨越磁盘。这里的大量数据不仅需要更长的时间来扫描签名,而且偶然发现最小 4 字节/32 位“中央目录的 zip64 结尾”签名的随机机会也会随着数据长度的增加而增加。

“查找定位器的唯一方法是查找定位器的魔数(Magic Number)”是不正确的。如果存在,则应紧接在“中央目录记录结束”之前。从那里读回 20 个字节,然后读取接下来的 4 个字节应该会产生“中央目录定位器签名的 zip64 结尾”——它可以用作健全性检查(而不是扫描它)。

关于zip - Zip64 'end of central directory locator' 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187914/

相关文章:

支持多流的音频文件格式

c# - 从 C# 的 zip 文件中读取二进制文件而不解压缩

linux - Java war 文件被错误地(?)检测为无效的 zip 文件

linux - 如何有效地将许多文件移动到新服务器?

java - 验证受密码保护的 ZIP 文件

php - 更改 PHP 中的字节顺序

graph - 最佳/更标准的图形表示文件格式? (GraphSON、Gexf、GraphML?)

游戏的 3D 文件格式

c++ - 用于即时压缩和二进制搜索的最佳压缩库/格式?

c# - 通过 HTTP 发布 Zip 文件不再在 Win 7 Zip 程序中打开