Qt压缩与解压:自带zip压缩QZipReader和QZipWriter

本文介绍了如何利用Qt库自带的QZipReader和QZipWriter类,无需额外编译zlib或quazip,轻松实现ZIP文件的解压缩和压缩。通过在项目文件中添加QT+=gui-private,然后引入头文件,可以方便地调用API进行文件的压缩和解压缩操作。解压缩方法是通过QZipReader的extractAll()函数,压缩则通过QZipWriter逐个添加文件到ZIP包中。
摘要由CSDN通过智能技术生成

         使用Qt自带类QZipReader和QZipWriter,不用再自行编译zlib、quazip,亲测简单快捷,使用方法如下:

1.在pro文件添加 QT += gui-private

2.添加下面两个头文件

#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h"

3. zip包解压缩


//! \brief zipReader    zip包解压缩
//! \param zipPath      压缩包路径
//! \param zipDir       解压缩目录
//! \return 是否解压成功
bool zipReader(QString zipPath="test.zip", QString zipDir="")
{
    QDir tempDir;
    if(!tempDir.exists(zipDir)) tempDir.mkpath(zipDir);
    QZipReader reader(zipPath);
    return reader.extractAll(zipDir);
}

4. 压缩zip包

//! \brief zipWriter    压缩zip包
//! \param zipPath      压缩包路径
//! \param fileList     需要压缩的文件列表
void zipWriter(QString zipPath="test.zip", QFileInfoList fileList=QFileInfoList())
{
    QZipWriter *writer = new QZipWriter(zipPath);

    // 遍历文件列表
    foreach (QFileInfo fileInfo, fileList) {
        //添加需要压缩的文件
        QFile file(fileInfo.filePath());
        if (!file.exists()) continue;
        file.open(QIODevice::ReadOnly);
        writer->addFile(fileInfo.fileName(), file.readAll());
        file.close();
    }
    writer->close();
    if(writer)
    {
        delete writer;
        writer = nullptr;
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值