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

使用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;
    }
}

 

posted @ 2022-08-04 09:10  远方是什么样子  阅读(4486)  评论(0编辑  收藏  举报