linux下使用libz解压整个目录

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

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>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值