#include <Windows.h>
#include "LiteZip.h"
#include "LiteUnzip.h"
#pragma comment(lib,"LiteZip.lib")
#pragma comment(lib,"LiteUnzip.lib")
/************************************************************************/
/*文件的压缩和解压库litezip库
详解:HUNZIP、HZIP 相当于句柄HANDLE.
1、ZipCreateFile(HZIP hz,const char* compress_name,const char* password)
@HZIP为句柄,compress_name 为压缩文件名,password:如果想要压缩加密,则传入密钥,否则传0
2、ZipAddFile(HZIP hz,const char* dst_name,const char* src_name)
@dst_name为压缩后的文件名字,src_name为压缩前文件的名字
3、ZipClose(HZIP) 添加完后,关闭
4、UnzipOpenFile(HUNZIP,const char* compress_name,const char* password)打开要解压的文件
5、UnzipGetItem(HUNZIP,ZIPENTRY* ze)获取压缩文件中的文件,ZIPENTRY记录了每个文件的属性
@ZIPENTRY ze在传递给UnzipGetItem时,先赋值为-1,我们通过ze.Index遍历每个文件,并用UnzipItemToFile()解压
6、UnzipItemToFile(HUNZIP,const char* file_name,ZIPENTRY*)
file_name为传出来的文件名
7、UnzipClose(UNZIP)
缺陷:好像不能压缩已经是压缩文件的文件,如果压缩一个文件夹也需要再次学习
有空可以学习zlib开源库,该库是跨平台的开源库!
*/
/************************************************************************/
void unzip()
{
HUNZIP huz;
ZIPENTRY ze;
DWORD numitems;
UnzipOpenFile(&huz,"simple.zip",0);
ze.Index = (DWORD)-1;
UnzipGetItem(huz,&ze);
numitems = ze.Index;
for(ze.Index = 0; ze.Index < numitems; ze.Index++)
{
UnzipGetItem(huz,&ze);
UnzipItemToFile(huz,ze.Name,&ze);
}
UnzipClose(huz);
}
void zip()
{
HZIP hz;
ZipCreateFile(&hz,"simple22.zip",0);
ZipAddFile(hz,"haoyy.txt","hao.txt");
ZipAddFile(hz,"bianlimulus.cpp","bianlimulu.cpp");
ZipClose(hz);
}
int main()
{
zip();
unzip();
}