C++ 使用老牌库xzip & unzip对文件进行压缩解压

原文链接

https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win

https://www.codeproject.com/Articles/4135/XZip-and-XUnzip-Add-zip-and-or-unzip-to-your-app-w

完全开源随便玩耍的一个老库库,

本文涉及IDE  VS2013  vc++6.0

无需调用静态库或者动态库,直接包含即可使用 MFC 非MFC工程都可以没有限制,为了方便自身使用涉及这宝宝

自己写个导出库使用,顺便作此文。

--------------------------------------------------------------------------------------------------------------------------------------------------

VS2013/VC++6.0(后面同称IDE) 

取消预编译处理

VC- 工程- C/C++ -预编译处理-不使用预补偿页眉

VS-工程-C/C++-找到不使用预编译处理即可

还有一点比较重要的这三者的顺序,如果不注意就报错了

#include <winnt.h>
#include "XUnzip.h"
#include "XZip.h"

好了配置好IDE然后就可以随便玩耍了,

这个库里面有

HZIP CreateZip(void *z, unsigned int len, DWORD flags);//创建一个空的zip

Z:某路径下压缩文件名,无路径默认当前工作目录

len:压缩内存的大小,其他情况为0

flags:压缩文件使用标志 ZIP_FILENAME

成功返回非0

ZipAdd(HZIP hz, const TCHAR *dstzn, void *src, unsigned int len, DWORD flags);//将一个文件添加进行压缩

hz:创建或者打开zip的文件指针

dstzn:在zip文件中显示的文件名

src:对于(ZIP_FILENAME 压缩)的情况,这个是需要添加到压缩包的文件的名字,需要给出具体的路径,若没有绝对路径那么默认当前工作目录下

len:对于压缩内存的内容(ZIP_MEMORY)这是压缩内存的大小,其他情况,这个应该是0

flags:如果是压缩文件,这个标志是ZIP_FILENAME

returns:ZRESULT  成功为ZR_OK

HZIP OpenZip(void *z, unsigned int len, DWORD flags);打开一个已经存在的压缩文件

z:压缩文件名  【相对路径一般为当前工作目录】

len:对于压缩内存的内容(ZIP_MEMORY)这是压缩内存的大小,其他情况,这个应该是0

flags:如果是压缩文件,这个标志是ZIP_FILENAME

returns: HZIP  非0为成功,0这是失败

ZRESULT GetZipItemA(HZIP hz,int index,ZIPENTRY * ze);    //获取压缩文件里的信息
ZRESULT GetZipItemW(HZIP hz,int index,ZIPENTRYW * ze);//获取压缩文件里的信息

hz:创建/打开zip文件指针

index:zip文件里的元素下标(0开始)

ze:一个指向ZIPENTRY结构体指针(ANSI)或者ZIPENTRYW(Unicode宽字节)

returns:ZRESULT  成功为ZR_OK

ZRESULT FindZipItemA(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRY *ze);     //在压缩文件里查找某元素
ZRESULT FindZipItemW(HZIP hz, const TCHAR *name, bool ic, int *index, ZIPENTRYW *ze);//在压缩文件里查找某元素

hz:创建/打开zip文件指针

name:需要在zip文件中查找的元素名字

ic:值为TRUE大小写不敏感

index:返回要查找元素的下标,否则是-1,

ze:一个指向ZIPENTRY结构体指针(ANSI)或者ZIPENTRYW(Unicode宽字节)

returns:ZRESULT  成功为ZR_OK

ZRESULT UnzipItem(HZIP hz, int index, void *dst, unsigned int len, DWORD flags)  //解压压缩文件里面的某元素

hz:创建/打开的zip文件指针

index:要解压的元素下标

dst:解压出来的文件名字

len:对于压缩内容(ZIP_MEMORY)这个值是压缩内存的大小,其他情况,这个值应该是0

flags:如果是压缩文件,那么使用这个标志ZIP_FILENAME

returns:ZRESULT 成功返回ZR_OK

ZRESULT CloseZipZ(HZIP hz);   //关闭压缩文件

hz:要操作的zip文件指针

returns:ZRESULT 成功返回ZR_OK

注意压缩文件的路径,即可随心所欲压缩。

原文地址:https://www.cnblogs.com/liuruoqian/p/8232486.html