转(zip文件格式说明)
zip文件由三部分组成:压缩的文件内容源数据、压缩的目录源数据、目录结束标识结构
1、 压缩的文件内容源数据:
记录着压缩的所有文件的内容信息,其数据组织结构是对于每个文件都由file header 、file data、data descriptor三部分组成。
1)File header:用于标识该文件的开始,结构说明如下:
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、 压缩的目录源数据
对于待压缩的目录而言,每一个子目录对应一个压缩目录源数据,记录该目录的描述信息。压缩包中所有目录源数据连续存储在整个归档包的最后,这样便于向包中追加新的文件。
结构说明如下:
Central directory file header |
|||
Offset |
Bytes |
Description[18] |
译 |
0 |
4 |
Central directory file header signature =0x02014b50 |
核心目录文件header标识=(0x02014b50) |
4 |
2 |
Version made by |
压缩所用的pkware版本 |
6 |
2 |
Version needed to extract (minimum) |
解压所需pkware的最低版本 |
8 |
2 |
General purpose bit flag |
通用位标记 |
10 |
2 |
Compression method |
压缩方法 |
12 |
2 |
File last modification time |
文件最后修改时间 |
14 |
2 |
File last modification date |
文件最后修改日期 |
16 |
4 |
CRC-32 |
CRC-32算法 |
20 |
4 |
Compressed size |
压缩后大小 |
24 |
4 |
Uncompressed size |
未压缩的大小 |
28 |
2 |
File name length (n) |
文件名长度 |
30 |
2 |
Extra field length (m) |
扩展域长度 |
32 |
2 |
File comment length (k) |
文件注释长度 |
34 |
2 |
Disk number where file starts |
文件开始位置的磁盘编号 |
36 |
2 |
Internal file attributes |
内部文件属性 |
38 |
4 |
External file attributes |
外部文件属性 |
42 |
4 |
Relative offset of local file header. This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file. |
本地文件header的相对位移。 |
46 |
n |
File name |
目录文件名 |
46+n |
m |
Extra field |
扩展域 |
46+n+m |
k |
File comment |
文件注释内容 |
3、 目录结束标识结构
目录结束标识存在于整个归档包的结尾,用于标记压缩的目录数据的结束。
结构说明如下:
End of central directory record |
|||
Offset |
Bytes |
Description[18] |
译 |
0 |
4 |
End of central directory signature =0x06054b50 |
核心目录结束标记(0x06054b50) |
4 |
2 |
Number of this disk |
当前磁盘编号 |
6 |
2 |
Disk where central directory starts |
核心目录开始位置的磁盘编号 |
8 |
2 |
Number of central directory records on this disk |
该磁盘上所记录的核心目录数量 |
10 |
2 |
Total number of central directory records |
核心目录结构总数 |
12 |
4 |
Size of central directory (bytes) |
核心目录的大小 |
16 |
4 |
Offset of start of central directory, relative to start of archive |
核心目录开始位置相对于archive开始的位移 |
20 |
2 |
Comment length (n) |
注释长度 |
22 |
n |
Comment |
注释内容 |
转于:http://blog.sina.com.cn/s/blog_4c3591bd0100zzm6.html
转(zip文件格式说明)的更多相关文章
- Zip文件格式
Overview This document describes the on-disk structure of a PKZip (Zip) file. The documentation curr ...
- ZIP压缩算法详细分析及解压实例解释
最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...
- 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...
- java-a实现压缩与解压缩(zip、gzip)
zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...
- ( 解压缩版 免安装版 或 zip版 )如何修改mysql5.6.24 字符编码
1.当我们把zip文件格式解压到指定目录后,并且完成基本环境配置后,打开mysql 5.6.24会发现名为[my-default.ini]的文件.我们用记事本打开该文件会发现并没有[default-c ...
- Java实现文件压缩与解压[zip格式,gzip格式]
Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例. zip扮演着归档和压缩两个角色:gzip并 ...
- liux之我用过的zip解压命令
用途说明 zip文件是一种常用的压缩文件格式,WinZip.WinRar等压缩软件都支持zip文件格式,就连java的jar包也是zip格式 的,Firefox插件xpi文件也是zip格式的.Linu ...
- java基础---->Zip压缩的使用(转)
java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...
- 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)
一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...
随机推荐
- iOS中常用的设计模式
常用的设计模式(一)代理模式应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则:开放-封闭原则实例:tableview的 数据源delegate,通过 ...
- help man info 三个的区别
“--help”选项 “--help”是一个工具选项,大部分的GNU工具都具备这个选项,“--help”选项可以用来显示一些工具的信息 “man”工具 Man工具可以显示系统手册页中的内容,这些内容大 ...
- HTML5学堂,感谢您一年的陪伴(上)
在HTML学堂将满一周岁之际,感谢再过去的一年里支持和关注它的每一个小伙伴.有了你们的支持,HTML5学堂才能更好的走下去.我们将会把这一年的积累重新体现在HTML5学堂的官网上.HTML5学堂将会全 ...
- Jbrowse安装和序列、bam、vcf配置
最近做了一个关于基因开发的项目,要求最终输出的文件可以在专门的基因浏览器上边显示,类似统计图的东西.废话不说上图(表示表达不出来0.0)! 先说下Jbrowse这个东西吧,一句话:一个简单的,便携式依 ...
- 修复FreeBSD上的ufs文件系统
昨天在两台FreeBSD上配置好Heartbeat服务(两台机器是用网线连通的,做为Heartbeat的两个节点),启动服务时Heartbeat检测到crmd守护进程没起来,于是它就尝试重启两台机器以 ...
- 怎么样修改PHPStorm中文件修改后标签和文件名的颜色与背景色
自从最近在PHPstrom里引入Git,并且使用MONOKAI_SUBLIME主题之后 ,当文件在PHPstrom中进行编辑,文档内容变化时,左侧项目文件列表中的文件名颜色以及右侧编辑区域标签卡的文件 ...
- TCP/IP BOOKS
TCP/IP Fundamentals for Microsoft Windows: Overview https://technet.microsoft.com/en-us/library/bb72 ...
- python_selenium智联搜索
python_selenium智联搜索 妹子要去招聘会工作,奈何网上仅仅提供招聘会的公司名字,没有提供招聘的职位,SO我写了个小代码给妹子在智联上面搜索职位,由于时间紧迫,前程的就不写了 #!/usr ...
- Spring源码解析 - AntPathMatcher
文章摘要: 1. ant匹配规则 2. PathMatcher接口 3. 通过测试用例看AntPathMatcher的使用 ant匹配规则 AntPathMatcher如名使用的ant 的匹配规则,我 ...
- Use setInterval instead of setTimeout
Use setInterval instead of setTimeout check out codes: http://jsfiddle.net/GustvandeWal/295jqqqb/