Zip 文件是什么?

2024年8月30日 | 阅读4分钟

ZIP 是一种文件格式,可在不牺牲质量的情况下压缩数据。一个或多个压缩文件或文件夹可以包含在一个 ZIP 文件中。ZIP 文件格式支持各种压缩算法,其中最常见的是 DEFLATE。

作为先前 ARC 压缩格式的替代品,Thom Henderson 于 1989 年开发了此格式,并首次在 PKWARE, Inc. 的 PKZIP 工具中推出。除了 PKZIP 之外,其他软件实用程序很快也支持 ZIP 格式。

自 1998 年以来,Microsoft 以“压缩文件夹”的名称提供了 ZIP 支持,该支持存在于所有 Windows 版本中。

而在 Mac OS X 10.3(通过 BOMArchiveHelper,现称为 Archive Utility)中,它曾被使用,之后 MAC 也提供了内置的 ZIP 支持。与 Windows 和 Mac OS X 具有内置 ZIP 支持一样,大多数免费操作系统也具有此功能。

.zip 和 .ZIP 文件扩展名,以及 MIME 媒体格式 application/zip,通常用于 ZIP 文件。1. 许多应用程序,通常以不同名称,将 ZIP 用作基本文件格式。

历史

Katz 的朋友 Robert Mahoney 建议将名称命名为“zip”(意为“快速飞翔”)。他们决定给人的印象是他们的产品将比当时可用的 ARC 和其他压缩格式更快。

1989 年 2 月 14 日,PKWARE 和 Infinity Design Concepts 发布了联合新闻稿,宣布 .ZIP 文件格式可供公众领域使用。

.zip 版本历史

存在许多 .ZIP 文件格式规范,它们也有自己的版本号,这些版本号可能与 PKZIP 工具的版本号一致,也可能不一致,尤其是在 PKZIP 6 或更高版本中。

其他企业或组织正在缓慢采用 PKWARE 规范。

在 20 世纪 90 年代末,.zip 文件的格式规范已在 PKWARE.com 网站上发布,标题为“APPNOTE -.ZIP 文件格式规范”。此外,某些版本并未发布规范。

在 PKWARE 网站上,在线规范的 URL 已多次更新。

标准化

根据 2015 年发布的 ISO/IEC 21320-1《文档容器文件 - 第 1 部分:核心》,“.Zip 文档容器文件符合 Zip 文件”。它规定了 Zip 文件中强制执行的以下 ZIP 文件格式限制。它们是

  • ZIP 存档只能以未压缩状态存储,或使用“deflate”压缩工具(即,压缩方法可以包含值“0” - 存储,或“8” - deflated)。
  • 不允许加密功能。
  • 不允许 SES 的数字签名功能。
  • 不允许 PKPatchMaker 的“已打补丁信息”功能。
  • 存档不能分成多个卷或分段。

设计

. 可以在 ZIP 文件中存储多个文件。ZIP 帮助我们以多种方式压缩文件,并轻松地将它们存储而无需压缩。

由于每个文件都是单独存储的,因此同一文件夹中的不同文件可以以不同的方式压缩。由于 ZIP 存档中的文件是单独压缩的,因此可以在不压缩或解压缩整个存档的情况下提取或添加新文件。

这与压缩的 tar 文件不同,后者不适合随机访问处理。ZIP 文件包含一个顶层目录。这告诉我们 ZIP 文件中有哪些文件以及它们在 ZIP 文件中的位置。这使得 ZIP 阅读器无需读取整个 ZIP 文件夹即可加载文件列表。

ZIP 存档可以使用与 ZIP 存档无关的额外数据。

为防止数据丢失,ZIP 格式采用 32 位 CRC 算法,并包含存档目录结构的两个副本。

为了冗余,ZIP 文件条目通常包含本地文件头中的此详细信息。

例如,我们可以从包含文件 A、B 和 C 的 ZIP 文件开始。然后,删除文件 B,并修改文件 C。只需将新文件 C 添加到原始 ZIP 文件末尾,然后创建一个仅包含文件 A 和新文件 C 的新中央目录。

“Extra”数据字段对于 ZIP 格式的可扩展性至关重要。WinZip 兼容的 AES 加密、文件属性、更高分辨率的 NTFS 或 Unix 文件时间戳,“extra”字段用于支持 ZIP64 格式。

“Extra”字段可用于添加附加功能。规范要求 ZIP 工具忽略它们不知道的任何 Extra 字段。

ZIP 格式使用四字节“签名”来标识文件的不同结构。签名附加到每个文件条目。中央目录中的每个条目都以 4 字节的中央文件头签名开头,该签名指示中央目录记录的结束。

ZIP 规范不包含 BOF 或 EOF 标记。ZIP 条目,可以通过其本地文件头签名轻松识别,通常是 ZIP 文件中的第一个元素。但这并不总是如此,因为 ZIP 规范不要求这样做;例如,自解压存档将以可执行文件头开头。

由于该格式允许在块和其他文件数据流之间存在其他数据以包含此类签名,因此扫描可能会导致误报。


下一主题Apache Airflow