libz用的比较多,在libz中有个minizip,实现了对压缩和解压缩的封装,
这里使用该文件封装为C++类,实现对整个压缩包的解压;
使用代码如下:main.cpp
//gcc zipHelper.cpp main.cpp ./minizip/ioapi.c ./minizip/zip.c ./minizip/unzip.c -o testzip -lz -lstdc++
#include <iostream>
#include "zipHelper.h"
using namespace std;
int main(int argc, char** argv) {
cPackFile packTool;
cUnpackFile unpackTool;
//packTool.CreateZipFromDir("/robin1/testZip/test", "/robin1/testZip/example.zip");
unpackTool.CreateDirFromZip("/robin1/testZip/test1", "/robin1/testZip/example.zip");
return 0;
}
调用的类文件:zipHelper.h
#pragma once
#ifndef ZIP_H
#define ZIP_H
#include <iostream>
#include <fstream>
#include <string>
#include "minizip/zip.h"
#include "minizip/unzip.h"
using namespace std;
class cPackFile
{
public:
//将某个目录或者文件(dirName)压缩为zipFileName(.zip)文件
int CreateZipFromDir(const string &dirName, const string & zipFileName);
cPackFile();
~cPackFile();
private:
int count = 0;
//递归添加子目录到zip文件
void CollectFilesInDirToZip(zipFile zf, const string & strPath, const string & parentDir);
void AddFileToZip(zipFile zf, const string & fileNameInZip, const string & srcFile);
};
static inline bool IsFileExist(const string &pPath);
class cUnpackFile
{
private:
bool splitDirAndName(const string &str, string& dir);
public:
cUnpackFile();
~cUnpackFile();
void CreateDirFromZip(const string & dirName, const string &zipFileName);//解压到文件夹dirName
void CreateFileFromZip(const string & fName, const string & zipFileName);//解压第一个文件到文件fName
};
#endif
源文件为:zipHelper.cpp
#include "zipHelper.h"
#include <stdio.h>
#include <fstream>

本文介绍了如何利用minizip库在C++中实现文件和目录的压缩与解压缩。通过创建cPackFile和cUnpackFile类,分别实现了将目录打包成zip文件和从zip文件解压到指定目录的功能。示例代码展示了如何调用这些类的方法进行操作,同时提供了相关源代码供参考。
最低0.47元/天 解锁文章
366

被折叠的 条评论
为什么被折叠?



