zip文件由三部分组成:压缩的文件内容源数据、压缩的目录源数据、目录结束标识结构
1、 压缩的文件内容源数据:
记录着压缩的所有文件的内容信息,其数据组织结构是对于每个文件都由file header 、file data、data descriptor三部分组成。
1)File header:用于标识该文件的开始,结构说明如下:
|
|||
Offset |
Bytes |
Description |
译 |
0 |
4 |
Local file header signature = 0x04034b50 (read as a little-endian number) |
文件头标识,值固定(0x04034b50) |
4 |
2 |
Version needed to extract (minimum) |
解压文件所需 pkware最低 版本 |
6 |
2 |
General purpose bit flag |
通用位标记 |
8 |
2 |
Compression method |
压缩方法 |
10 |
2 |
File last modification time |
文件最后修改时间 |
12 |
2 |
File last modification date |
文件最后修改日期 |
14 |
4 |
CRC-32 |
说明采用的算法。 |
18 |
4 |
Compressed size |
压缩后的大小。 |
22 |
4 |
Uncompressed size |
非压缩的大小。 |
26 |
2 |
File name length (n) |
文件名长度 |
28 |
2 |
Extra field length (m) |
扩展区长度 |
30 |
n |
File name |
文件名 |
30+n |
m |
Extra field |
扩展区 |
2)file data :相应压缩文件的源数据。
3)data descriptor:用于标识该文件压缩结束,该结构只有在相应的header中通用标记字段的第3位设为1时才会出现,紧接在压缩文件源数据后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。
结构说明如下:
Data descriptor |
|||
Offset |
Bytes |
Description[18] |
译 |
0 |
4 |
Local file header signature = 0x08074b50 |
本地header标记 |
4 |
4 |
CRC-32 |
CRC-32 |
8 |
4 |
Compressed size |
压缩后大小 |
12 |
4 |
Uncompressed size |
非压缩的大小 |
2、 压缩的目录源数据
对于待压缩的目录而言,每一个子目录对应一个压缩目录源数据,记录该目录的描述信息。压