谈谈使用C程序实现zip文件解压问题

来源:互联网 发布:不出于户 以知天下 编辑:程序博客网 时间:2024/05/01 07:40

zip文件使用的压缩算法为deflate压缩,目前能处理inflate压缩数据的函数库有zlib函数库,其中主要的函数有inflate和uncompress函数两种;

(1)inflate和uncompress函数的区别

uncompress将内存中数据进行解压,与compress压缩函数一起使用,实现过程中会调用inflate函数,而且需要对inflate函数中的流参数进行初始化。
inflate函数是uncompress实现的一部分,提现的是deflate压缩思想,但是不能直接使用,需要很多参数的配置,可见inflate函数只是一个基函数。
目前一些需要压缩的网络数据常常需要使用uncompress函数
(2)如何实现zip文件解压

第一、可以使用Xunzip函数库进行解压,但是如遇到zip文件损坏的情况可能会出现程序崩溃,这是因为Xunzip函数未对zip格式进行有效检验可能会出现数组越界错误;

第二、可以基于uncompress函数自己编写一个Zip文件解压类,其中需要了解zip文件具体格式,相关格式可以去知网中查找,具体而言需要提取出其中的附加信息、压缩数据,再将压缩数据使用uncompress函数进行解压,需要指出的是defalte压缩数据格式有静态、动态多种,详情请参照http://www.cnblogs.com/esingchan/p/3958962.html


2 0