一、简介    

    zipper是一个C++压缩库,使用它可以将文件和文件夹压缩为zip文件,或者将一个zip文件解压。其下载链接为:https://github.com/sebastiandev/zipper。下面讲述其在windows平台的使用

 

二、下载源码

首先通过git下载zipper的源码(注意:不要在https://github.com/sebastiandev/zipper的页面中直接点击"Download ZIP"直接下载源码,这样下载下来的源码中不含minizip的源码)

git clone --recursive https://github.com/sebastiandev/zipper.git

 

zipper依赖zlib,所以还需要下载zlib的源码

打开链接:http://www.zlib.net/,在下图链接中下载zlib源码

 

三、构建测试工程,编译程序

下面通过一个示例讲解zipper的使用

首先通过vs新建控制台程序(博主用的是vs2015),添加main.cpp

#include <zipper.h>
#include <iostream>

using namespace zipper;
using namespace std;


int main()
{
	Zipper zipper("ziptest.zip");
	zipper.add("测试文件\\somefile.txt");
	zipper.add("测试文件\\Pic");
	zipper.close();

	return 0;
}

 

 

在工程目录下新建minizip文件夹,将zipper源码的minizip目录中的下面这些文件拷贝到该目录中

 

在工程目录下新建zipper文件夹,将zipper源码的zipper目录中的下面这些文件拷贝到该目录中

 

在工程目录下新建zlibvc文件夹,将zlib源码下面的这些文件拷贝到该目录中

 

添加完上述文件后,工程目录下如下图所示:

 

在vs中新建三个筛选器minizip、zipper、zlibvc,将上面文件分别添加到这三个筛选器中,如下图所示:

 

然后设置“附加包含目录”

 

更改zipper\tps\dirent.c的代码:

将115行修改为:return FindFirstFileA(search_spec, (LPWIN32_FIND_DATAA)data);

将161行修改为:lstrcpyA(result->dirent.d_name, (LPCSTR)(result->find_data.cFileName));

将207行修改为:lstrcpyA(dir->dirent.d_name, (LPCSTR)(dir->find_data.cFileName));

将225行修改为:lstrcpyA(dir->dirent.d_name, (LPCSTR)(dir->find_data.cFileName));

将228行修改为:if(!FindNextFileA(dir->hFind, (LPWIN32_FIND_DATAA)(&dir->find_data)))

 

更改zipper\CDirEntry.cpp的代码:

在第24行增加:using namespace std;

将414行修改为:end = min(pos, pattern.length());

将486行修改为:size_t i, imax = min(absolutePath.length(), RelativeTo.length());

 

编译整个工程,可以看到编译成功了。

 

四、运行示例程序测试

在工程目录下创建文件夹"测试文件\Pic"和文件"测试文件\somefile.txt"

运行本程序,可以看到生成了ziptest.zip,已经成功将上述两个文件压缩为zip文件了

 

五、示例下载

本博文的示例放在链接:https://download.csdn.net/download/u014552102/14052311,该示例已经为大家构建好了vs工程(vs2015),直接使用即可

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐