zip格式分析

本文详细探讨了ZIP压缩包的内部结构,包括其文件在任意顺序中的存储方式、大型ZIP文件如何跨多个磁盘分布以及如何通过中央目录结构和文件头来解压文件数据。
摘要由CSDN通过智能技术生成

从网上下载的一个介绍zip压缩包格式的详细分析文件,内容如下。其实解压zip包的过程是从中央目录结构 读取文件的文件标头位置,接着读转到标头继续向下读取文件数据,将此数据传给解压接口进行解压。


Files stored in arbitrary order.  Large .ZIP files can span multiple

volumes or be split into user-defined segment sizes. All values
are stored in little-endian byte order unless otherwise specified.

总览 .zip 文件格式:
[文件标头 1]
[文件数据 1]
[数据描述符记录 1]
.
.
.
[文件标头 n]
[文件数据 n]
[数据描述符记录 n]
[归档解密标头]
[归档额外数据记录]
[中央目录结构]
[中央目录记录的 Zip64 结尾]
[中央目录定位器的 Zip64 结尾]
[中央目录记录的结尾]

- A 文件标头 --------------------

文件标头签名       4 字节 [开始 0] (0x04034b50)
所需版本           2 字节 [开始 4]
一般用途位标记     2 字节 [开始 6]
压缩方法           2 字节 [开始 8] (8=DEFLATE; 0=UNCOMPRESSED)
文件的最后修改时间 2 字节 [开始 10]
文件的最后修改日期 2 字节 [开始 12]
crc-32             4 字节 [开始 14]
压缩后的大小       4 字节 [开始 18]
解压缩后的大小     4 字节 [开始 22]
文件名长度         2 字节 [开始 26]
额外字段长度       2 字节 [开始 28]

文件名             变量
额外字段           变量



- B 文件数据 --------------------

紧接着文件标头就是已压缩的或未压缩的文件数据。
在 zip 归档里面的每一个文件都是一系列重复的
[文件标头][文件数据][数据描述符记录]。



- C 数据描述符记录 --------------------

  crc-32         4 字节 [开始 0]
  压缩后的大小   4 字节 [开始 4]
  解压缩后的大小 4 字节 [开始 8]

      This descriptor exists only if bit 3 of the general
      purpose bit flag is set (see below).  It is byte aligned
      and immediately follows the last byte of compressed data.
      This descriptor is used only when it was not possible to
      seek in the output .ZIP file, e.g., when the output .ZIP file
      was standard output or a non-seekable device.  For ZIP64(tm) format
      archives, the compressed and uncompressed sizes are 8 bytes each.

      When compressing files, compressed and uncompressed sizes
      should be stored in ZIP64 format (as 8 byte values) when a
      files size exceeds 0xFFFFFFFF.   However ZIP64 format may be
      used regardless
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值