深入浅出(四)QuaZip库

1. QuaZip

QuaZip 是一个对 zlib 封装的 C++ 类库,编译时需要依赖zlib库。QuaZip 用于读取和写入 ZIP 归档文件。它提供了一种方便的方式来处理 ZIP 格式的文件,包括创建、读取、添加、提取和修改 ZIP 文件中的内容。

  1. 压缩和解压缩文件:QuaZip 允许你创建 ZIP 归档文件,并将文件或文件夹添加到 ZIP 中。同时,它也提供了从 ZIP 归档中提取文件的功能,使得你可以解压缩 ZIP 文件并获取其中的内容。

  2. 文件管理:通过 QuaZip,你可以管理 ZIP 归档中的文件,包括获取文件列表、检查文件是否存在、获取文件的属性等操作。

  3. 数据存储:ZIP 格式是一种常用的数据存储和传输格式,QuaZip 可以帮助你以 ZIP 格式存储和处理数据,使得数据在传输和存储过程中更加紧凑和便于管理。

  4. 跨平台兼容性:QuaZip 是跨平台的,可以在多种操作系统上使用,包括 Windows、Linux、macOS 等,因此非常适合需要在不同平台上进行文件处理和数据传输的项目。

总的来说,QuaZip 提供了一个方便、高效的方式来处理 ZIP 归档文件,使得你可以轻松地在你的项目中进行文件压缩、解压缩和管理操作。

1.1 QuaZip 下载

地址
官网https://quazip.sourceforge.net/
GitHub导航页https://stachenov.github.io/quazip/
GitHub 地址https://github.com/stachenov/quazip
GitHub Release地址https://github.com/stachenov/quazip/releases
souceforge下载https://sourceforge.net/projects/quazip/
zlib持之以恒(三)zlib库
编译好的QuaZip库资源【免费】QuaZip编译好的库lib、dll

QuaZip 依赖 zlib库,使用前应先编译zlib库

2. QuaZip编译与部署

2.1 QuaZip 编译lib、dll

  1. quazip下载
    在这里插入图片描述

  2. 解压压缩包:quazip-1.4
    在这里插入图片描述

  3. 使用CMake-Gui配置路径
    在这里插入图片描述

  4. 点击Configure,选择x64
    在这里插入图片描述

  5. 报错:Qt5_DIR-NOTFOUND,修改Qt5_DIR路径,本文选择MSVC2019_64框架
    按下图修改,再次点击config
    在这里插入图片描述

  6. 报错找不到ZLIB相关库
    按下图添加zlib库依赖,再次点击config
    在这里插入图片描述

  7. 修改QUAZIP_USE_QT_ZLIB为on,再次点击config
    OFF 是指支持直接使用QT内置的zlib
    ON使用设置依赖的ZILB
    在这里插入图片描述

  8. 点击Generate生成vs2019工程
    在这里插入图片描述

  9. 点击Open Project,打开VS工程
    在这里插入图片描述

  10. 设置QuaZip为启动项目
    在这里插入图片描述

  11. debug x64 / release x64模式下生成编译
    在这里插入图片描述
    在这里插入图片描述

2.2 QuaZip 部署与使用

  1. 创建目录如下
    在这里插入图片描述
    install目录如下
目录说明文件
bin存放dllquazip1-qt5d.dll、quazip1-qt5.dll
lib存放libquazip1-qt5d.lib、quazip1-qt5.lib
include存放.h文件
  1. 设置CMAKE_INSTALL_PREFIX变量到指定目录
    在这里插入图片描述
  2. 设置INSTALL为启动项目,分别在Debug / Release 模式下进行重新生成,即可得到对应的生成包,如下图所示
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

3. C++示例

#include <QDir>
#include <QuaZip>
#include <QuaZipFile>
#include <QFile>

void zipDirectory(const QString &dirPath, const QString &zipPath)
{
    // 创建 ZIP 文件
    QuaZip zip(zipPath);
    zip.setFileNameCodec("UTF-8");
    if (!zip.open(QuaZip::mdCreate))
    {
        qDebug() << "Failed to create ZIP file:" << zipPath;
        return;
    }

    // 遍历文件夹并添加文件到 ZIP 文件中
    QDir dir(dirPath);
    QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
    foreach (QString fileName, files)
    {
        QString filePath = dirPath + QDir::separator() + fileName;
        QuaZipFile zipFile(&zip);
        if (!zipFile.open(QIODevice::WriteOnly, QuaZipNewInfo(fileName, filePath)))
        {
            qDebug() << "Failed to add file to ZIP:" << filePath;
            zip.close();
            return;
        }
        QFile file(filePath);
        if (!file.open(QIODevice::ReadOnly))
        {
            qDebug() << "Failed to open file:" << filePath;
            zipFile.close();
            zip.close();
            return;
        }
        zipFile.write(file.readAll());
        zipFile.close();
    }

    // 关闭 ZIP 文件
    zip.close();

    // 复制 ZIP 文件到指定目录
    QString destPath = "/path/to/destination/directory/" + QFileInfo(zipPath).fileName();
    if (!QFile::copy(zipPath, destPath))
    {
        qDebug() << "Failed to copy ZIP file to destination directory:" << destPath;
        return;
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小老鼠不吃猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值