ZIP文件格式是非常常用的一种压缩格式,比如M$新的EXCEL文件格式其实就是一个ZIP压缩文件,压缩文件内部是几个带路径的XML文件。如果我们想解析EXCEL文件的内容就要把压缩文件内的XML文件先解压出来,然后再解析XML文件内的内容。如果我们把EXCEL文件中的内容直接就会非常方便地进行内容解析。

解压缩ZIP文件格式在WINDOWS下还没有找到相应的API调用,如果使用第三方的库(zlib, libarchive)则要下载源代码进行安装,而且第三方的库文件都是针对各种压缩格式的,其内容非常繁杂,使用起来也很不方便。能不能自己来实现ZIP格式的解压缩,以方便程序的编译和移植呢?

答案是显然的。其实ZIP格式和GZIP格式虽然文件头不一样,但压缩数据的格式却是相同的,而GZIP的源代码相对要简单一些,我们弄清了GZIP和ZIP格式的区别后,就很容易把GZIP源代码中解压缩部分提取出来,使用到ZIP文件的解压缩上来。笔者已经把实现的源代码上传到了GITHUB上了,具体实现比较简单,源代码用C语言实现只有几百行,在这里就不再一一赘述了。

https://github.com/vonzorich/unziptomemory

需要说明的是为了代码简练,笔者只保留了dynamic部分的解压缩,而把store和fixed两种压缩格式的压缩函数拿掉了,CRC校验部分的代码也拿掉了,需要的同学请根据GZIP的源代码自行加上。

示例程序是在LINUX下编译测试通过的,如果是在WINDOWS下编译请更换头文件并自行实现memmem函数。

用C实现解压缩ZIP文件到内存相关推荐

  1. java 文件解压缩zip_java解压缩zip文件

    /* 提供zip文件的解压缩接口: AdapterZipFile: 输入:zipFileName(zip文件的绝对路径),outputDirectory(zip文件解压缩后的存放路径) 输出: 说明: ...

  2. 封装基于zlib的minizip库用于解压缩zip文件

    开发中需要用到解压缩.zip文件的功能,查阅资料后尝试使用开源库zlib中提供的的minizip源码,这篇文章记录具体的调用实现和学习过程,方便后续问题发现和补充. 跨平台环境:C/C++ / Win ...

  3. python压缩教程_如何使用Python压缩/解压缩zip文件?(代码示例)

    在批量交换大文件和多个文件时,使用zip文件是非常方便的.下面本篇文章就来带大家认识解一下zip文件,介绍使用Python压缩或解压缩zip文件的方法,希望对大家有所帮助.[视频教程推荐:Python ...

  4. php zip解压原理,PHP ZipArchive实现解压缩zip文件

    PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有 ...

  5. MAC解压缩zip文件

    Mac系统解压缩zip文件,主要有以下方法: 直接双击解压缩 打开终端,通过如下命令进行解压缩 $:unzip 文件名 注:当使用unzip命令解压缩可能会出现如下错误 $:unzip EasyCon ...

  6. python:实现解压缩zip文件(附完整源码)

    python:实现解压缩zip文件 可以使用Python内置的zipfile库来实现解压缩zip文件,下面是一个示例代码: import zipfile# 指定需要解压的zip文件路径 zip_fil ...

  7. 心得 ~ 使用 zlib库 解压缩 zip文件

    最近在完成一个项目,需要用到C++语言读取一个zip文件内指定文件的内容.在网上查阅了不少资料,针对过程中遇到的问题,自己也研究了一下,现将方法心得记录下来. 关于解压文件的方法,根据网上的资料,大概 ...

  8. java解压缩.zip文件

    业务调用 if ("zip".equals(extension)) {//压缩文件,返回新图片名称List<Map<String, String>> map ...

  9. pythonzip压缩字符串_Python压缩与解压缩ZIP文件的实现方法

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现压缩和解 ...

最新文章

  1. 报Java面授班有哪些优势
  2. access数据类型百度百科_Access数据库属于什么数据库。
  3. 学习篇之软件测试——初
  4. python学习day32 黏包 struct模块
  5. mysql数据库支持emoji表情的详解
  6. HTML饼状图中心添加文字,echarts饼状图环形中间动态文字
  7. chmod 用法示例
  8. pdo mysql 绑定查询_php mysql PDO 查询操作的实例详解
  9. openwrt刷回原厂固件_小米路由器4刷breed, pandavan,openwrt
  10. 微pe工具箱具体分区教程
  11. 计算机考研408真题2021年,2021年408考研科目真题及答案_文得学习网
  12. 2007.12.25 2个意外惊喜
  13. Sqlite3 stmt 机制操作
  14. 股票量化交易这些劣势你知道吗?
  15. SQL2008用户sa登录失败(错误18456)解决方法
  16. 计算机电子贺卡制作圣诞节,圣诞节电子贺卡怎么制作?
  17. 福利福利!来自阿里巴巴的26款超牛Java开源项目!
  18. 下面哪个不是python常用的开发工具_Python程序员常用的IDE和其它开发工具
  19. css 里面写响应式布局,CSS3怎么做出响应式布局
  20. 2019电赛----模拟电磁曲射炮

热门文章

  1. 2022年R1快开门式压力容器操作考试题及R1快开门式压力容器操作试题及解析
  2. 实验一:绘制任意斜率的直线段
  3. 2n皇后问题 dfs
  4. ERP项目售前需求调研提纲
  5. 全国DAMA-CDGA/CDGP数据治理认证考试难不难?
  6. M3U8文件详细说明
  7. 应聘信计算机英语怎么说,求职信范文模板_计算机英文求职信范文模板
  8. jquery 添加transform样式
  9. Git 很难么?带你从头到尾捋一遍,不信你学不会!
  10. 把QQ炫铃变为本机系统提示音