一个 ZIP 文件由三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
1、压缩源文件数据区
在这个数据区中每一个压缩的源文件/目录都是一条记录,记录的格式如下:
[文件头+ 文件数据 + 数据描述符]
a、文件头结构
组成 长度
文件头标记 4 bytes (0x04034b50)
解压文件所需 pkware 版本 2 bytes
全局方式位标记 2 bytes
压缩方式 2 bytes
最后修改文件时间 2 bytes
最后修改文件日期 2 bytes
CRC-32校验 4 bytes
压缩后尺寸 4 bytes
未压缩尺寸 4 bytes
文件名长度 2 bytes
扩展记录长度 2 bytes
文件名 (不定长度)
扩展字段 (不定长度)
b、文件数据
c、数据描述符
组成 长度
CRC-32校验 4 bytes
压缩后尺寸 4 bytes
未压缩尺寸 4 bytes
这个数据描述符只在全局方式位标记的第3位设为1时才存在(见后详解),紧接在压缩数据的最后一个字节后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。
2、压缩源文件目录区
在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据
组成 长度
目录中文件文件头标记 4 bytes (0x02014b50)
压缩使用的 pkware 版本 2 bytes
解压文件所需 pkware 版本 2 bytes
全局方式位标记 2 bytes
压缩方式 2 bytes
最后修改文件时间 2 bytes
最后修改文件日期 2 bytes
CRC-32校验 4 bytes
压缩后尺寸 4 bytes
未压缩尺寸 4 bytes
文件名长度 2 bytes
扩展字段长度 2 bytes
文件注释长度 2 bytes
磁盘开始号 2 bytes
内部文件属性 2 bytes
外部文件属性 4 bytes
局部头部偏移量 4 bytes
文件名 (不定长度)
扩展字段 (不定长度)
文件注释 (不定长度)
3、压缩源文件目录结束标志
组成 长度
目录结束标记 4 bytes (0x02014b50)
当前磁盘编号 2 bytes
目录区开始磁盘编号 2 bytes
本磁盘上纪录总数 2 bytes
目录区中纪录总数 2 bytes
目录区尺寸大小 4 bytes
目录区对第一张磁盘的偏移量 4 bytes
ZIP 文件注释长度 2 bytes
ZIP 文件注释 (不定长度)
分享到:
相关推荐
Zip 文件格式详解 Zip 文件格式是一种广泛使用的压缩文件格式,由 Phil Katz 于 1989 年创造。它能够将多个文件压缩成一个文件,方便存储和传输。下面是对 Zip 文件格式的详细解释。 压缩源文件数据区 压缩源文件...
"获取zip文件编码格式 cpdetector.zip" 是一个工具,它能够帮助我们识别ZIP文件内文本文件的编码格式。 这个工具的关键依赖于三个JAR文件:antlr-1.0.jar、cpdetector-1.08.jar和jchardet-1.0.jar。这些库提供了...
ZIP文件通常包含一个中央目录,记录了每个压缩文件的信息,包括文件名、大小、日期、时间以及压缩方法。 综上所述,本文的主题涵盖了压缩文件的基本概念、常见的压缩格式(如ZIP),以及如何使用编程语言(如Python...
"DXF文件格式详解(全).zip"是一个压缩包,包含了对DXF格式的全面解析,对于需要理解或处理DXF文件的用户来说,是一个宝贵的资源。 DXF文件格式的核心在于其结构,它分为多个部分,包括标题块、表格、实体和结束标记...
"Java读取Zip文件和文件内容" Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面...
总的来说,C++实现ZIP文件解压涉及对ZIP文件格式的深入了解,包括其结构、压缩方法和元数据。这个过程需要对文件I/O、内存管理和错误处理有扎实的理解。尽管本文提供了基本的思路,但在实际应用中,可能需要进一步的...
DXF 文件本质上由代码及关联值对组成。代码(通常称为组码)表明其后的值的类型。使用这些组码和值对,可以将 DXF 文件组织到由记录组成的区域中,这些记录由组码和数据项目组成。在 DXF 文件中,每个组码和值都各占...
**微软EMF文件格式详解.pdf**:这份文档很可能是微软官方或第三方专家提供的关于EMF格式的详细指南。通常,它会涵盖EMF的基本结构、记录类型、图形操作、颜色管理、图元定义等内容。通过阅读这份文档,读者可以了解...
本篇将详细介绍如何利用C++结合Curl库实现GET下载ZIP文件、POST上传ZIP文件以及普通POST请求以获取JSON数据。 首先,我们要理解GET和POST在网络请求中的基本概念。GET是HTTP协议中最常见的方法,用于请求服务器发送...
二、.zip文件格式详解 1. .zip文件结构:“作业文件.zip”是一个.zip格式的压缩包,内部可能包含一个或多个文件或文件夹。.zip格式采用分块存储,每个块包含了文件的元数据(如文件名、时间戳)和经过压缩的数据。 ...
ZIP是一种数据压缩和归档格式,能够将多个文件和文件夹打包成一个单一的ZIP文件,便于传输和存储。ZIP文件内部包含了每个原始文件的压缩数据和元信息,如文件名、时间戳和权限设置等。 “ZIP格式升级包解包封包签名...
对于解析得到的中间格式(json格式),我们根据文本的坐标以及位置等信息进行结构化提取。本项目做的主要是医疗报告单的解析与提取。 我们把每份报告单的内容分为四部分:title,head,body(table),bottom 对于我们...
在本篇中,我们将深入探讨如何使用cpp-pkg2zip工具来解密pkg文件并将其打包成zip文件,这是一个与C/C++编程相关的技术实践。 cpp-pkg2zip是一个开源项目,由开发者mmozeiko编写,用于处理PS Vita的pkg文件。这个...
7-Zip支持创建跨平台兼容的ZIP文件,你可以选择使用“Unix”格式,这样生成的ZIP文件在Linux下更容易被`unzip`识别。 3. **使用通用格式**: 另一个解决方案是使用更通用的压缩格式,如.tar.gz或.tar.bz2,这两种...
Zip文件格式是计算机中广泛使用的文件压缩和归档格式,它允许用户将多个文件和目录打包成一个单一的可移动和存储的文件。在本文中,我们将深入探讨Zip文件解析,特别是涉及到中文目录的情况。 首先,Zip文件的核心...
然后,将ZIP文件内容解析到内表,我们可以遍历`lt_files_info`,读取每个文件的内容,并将其转换为字符格式存储到内表中。例如: ```abap LOOP AT lt_files_info INTO DATA(ls_file_info). DATA(lv_file_content) ...
ZIP文件格式的标准由PKWARE公司制定,并由Info-ZIP组织进行开源实现。在C语言中实现ZIP操作,我们需要理解其内部结构和算法。 首先,ZIP文件的基本结构包括一个中央目录和多个本地文件头。每个本地文件头包含文件的...
这可能包括解析压缩块、解密被保护的ZIP文件等。 3. **修复**:一旦分析完成,工具会尝试修复ZIP文件的错误,包括修复损坏的压缩数据、恢复丢失的文件名和路径等。 4. **预览和恢复**:在修复过程中,高级的修复...
zlib库帮助处理ZIP文件的创建和解析。 5. **文件I/O操作**:在C++中,文件输入/输出(I/O)操作是通过标准库中的fstream类进行的。在打包过程中,需要读取目录中的每个文件并写入到ZIP文件;解压时,则需要从ZIP...
3. 解析ZIP文件:在UCOS应用中,通过UNZIP库提供的接口读取ZIP文件,遍历每个条目,调用ZLIB的解压缩函数来解压数据。 4. 存储解压缩后的文件:根据ZIP文件中的信息,在UCOS系统的文件系统上创建相应的文件,写入...