Qt使用7z压缩和解压示例(支持文件夹递归、多文件不同位置)

1,简介

Qt自带的压缩处理类功能不太完善,也不支持中文路径。

这是我封装好的一个Qt调用7z处理压缩解压的工具类 ZipAPI,提供了几个简单易用的接口。

写压缩解压代码从此非常方便快捷!

支持中文路径,支持常规的压缩解压功能:

如压缩一个文件夹(嵌套包含子文件夹)、压缩一堆文件(可在不同位置)、解压文件

注意:要将release文件夹中的 7z.exe 和 7z.dll 放到你的exe目录下!

2,ZipAPI 工具类接口

class ZipAPI
{
public:
	ZipAPI();

    //压缩一个文件夹
    static bool ZipDir(QString strDir, QString strZipfile);

    //压缩一群文件
    static bool ZipFiles(QStringList files, QString strZipfile);

    //解压
    static bool UnZip(const QString& strZipfile, const QString &strOutDir);

}

3,效果演示

制作了一个界面友好的示例demo,调用代码简洁直观。

压缩文件夹: 

压缩、解压多个文件: 

4,演示程序、源码下载

链接:https://pan.baidu.com/s/1Orm3gs_X45iUhEp1Ldnozw?pwd=jmy8 
提取码:jmy8

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,下面是使用Qt的QZipWriter压缩多个文件夹及其文件示例代码: ```cpp #include <QDir> #include <QFile> #include <QFileInfo> #include <QZipWriter> void zipFolders(const QStringList &folderPaths, const QString &zipFilePath) { QZipWriter zipWriter(zipFilePath); if (!zipWriter.status() == QZipWriter::NoError) { // 打开压缩文件失败 return; } for (auto folderPath : folderPaths) { QDir dir(folderPath); if (!dir.exists()) { // 文件夹不存在 continue; } // 添加文件夹压缩包 zipWriter.addDirectory(dir.dirName()); // 遍历文件夹中的所有文件 QFileInfoList fileList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); for (auto fileInfo : fileList) { if (fileInfo.isDir()) { // 递归压缩文件夹 zipWriter.setCompressionPolicy(QZipWriter::AutoCompress); zipWriter.setCreationPermissions(QFile::Permissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner)); QDir subDir(fileInfo.filePath()); zipFolders(QStringList(subDir.absolutePath()), zipFilePath); } else { // 添加文件压缩包 QFile file(fileInfo.filePath()); if (file.open(QIODevice::ReadOnly)) { QByteArray fileContent = file.readAll(); zipWriter.addFile(fileInfo.fileName(), fileContent); } } } } zipWriter.close(); } ``` 示例中,`zipFolders()`函数接受一个文件夹路径列表参数`folderPaths`和一个压缩文件路径参数`zipFilePath`。函数首先创建一个`QZipWriter`对象并打开压缩文件,然后逐个遍历传入的文件夹路径,将文件夹及其内容添加到压缩包中,其中如果遇到文件夹则需要递归调用`zipFolders()`函数压缩文件夹。 注意,在实际使用中需要根据需求设置压缩文件压缩策略和权限等属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆枫゛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值