# Qt压缩文件及文件夹

本文介绍了如何使用Qt库在Qt应用程序中实现文件和文件夹的压缩,包括创建QZipWriter实例、遍历文件列表、添加文件和文件夹到压缩包,并展示了GetFileList函数的应用。重点在于处理桌面文件和arrange文件夹内的Arrange.xml文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt压缩文件及文件夹

    QString zipPath  = QCoreApplication::applicationDirPath() + "/";
    QFileInfoList fileList = QFileInfoList() ;
    QZipWriter *writer = new QZipWriter(QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/" + tr("test.zip"));//压缩包压缩完成后直接放在桌面

    fileList = GetFileList(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();
    }

//可执行程序路径下有arrange文件夹,arrange文件夹下有Arrange.xml文件
    QString fileName = QCoreApplication::applicationDirPath() + QStringLiteral("/arrange/Arrange.xml");//获取文件夹下的文件
    QFile file(fileName);
    file.open(QIODevice::ReadOnly);//以只读方式打开该路径下的文件
    writer->addFile(QStringLiteral("arrange/Arrange.xml") ,file.readAll());//添加文件夹下的文件至压缩文件中
    file.close();
    writer->close();
    if(writer)
    {
        delete writer;
        writer = nullptr;
    }
    //最后压缩好的压缩包中有file1、file2、arrange文件夹
QFileInfoList MainWindow::GetFileList(QString path)
{
    QDir dir(path);
    QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    QFileInfoList file_newlist;
    for(int i=0; i<file_list.size(); i++){
        if((file_list.at(i).completeBaseName() == tr("file1")) || (file_list.at(i).completeBaseName() == tr("file2")) ){//将该目录下的file1和file2打包压缩
             file_newlist.append(file_list.at(i));
        }
    }

    return file_newlist;
}

头文件

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

.pro

添加: gui-private
`

头文件

#include <QFileInfoList>
#include <QStandardPaths>
#include "QtGui/private/qzipreader_p.h"
#include "QtGui/private/qzipwriter_p.h"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_44585751

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

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

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

打赏作者

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

抵扣说明:

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

余额充值