超简单,使用Qt编写压缩文件与解压文件

要使用Qt编写压缩文件代码,您可以使用Qt提供的QZipWriter和QZipReader类。

以下是一个简单的示例,演示如何使用QZipWriter将文件压缩为zip文件:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtZip/QZipWriter>
#include <QtZip/QZip>
#include <QFile>
#include <QDir>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow window;
    // 创建压缩文件
    QZipWriter zipWriter("archive.zip");
    // 添加文件到压缩文件中
    QFile file("file1.txt");
    if (file.open(QIODevice::ReadOnly)) {
        zipWriter.addFile("file1.txt", &file);
        file.close();
    }
    // 添加目录到压缩文件中
    QDir directory;
    if (directory.exists("dir")) {
        zipWriter.addDirectory("dir");
    }
    // 关闭压缩文件
    if (zipWriter.status() == QZipWriter::NoError) {
        zipWriter.close();
    }
    return app.exec();
}

在此示例中,创建了一个名为“archive.zip”的压缩文件,并将文件“file1.txt”和目录“dir”添加到其中。然后,关闭了压缩文件。

要读取压缩文件,可以使用QZipReader类。以下是一个简单的示例,演示如何使用QZipReader打开压缩文件并提取其中的文件:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtZip/QZipReader>
#include <QFile>
#include <QDir>
#include <QDebug>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow window;
    // 打开压缩文件
    QZipReader zipReader("archive.zip");
    // 遍历压缩文件中的所有项目
    bool isDir;
    while (zipReader.hasNextEntry(&isDir)) {
        const QZipEntry &entry = zipReader.nextEntry();
        if (!isDir) {
            // 提取文件到当前目录
            QFile outFile(entry.fileName());
            if (outFile.open(QIODevice::WriteOnly)) {
                zipReader.copyEntry(entry, &outFile);
                outFile.close();
            }
        } else {
            // 处理目录
            const QString &dirName = entry.fileName();
            if (!dirName.isEmpty()) {
                QDir dir(dirName);
                if (!dir.exists()) {
                    dir.mkpath(dirName);
                }
            }
        }
    }
    zipReader.close();
    return app.exec();
}

在此示例中,打开了名为“archive.zip”的压缩文件,并遍历其中的所有项目。如果项目是文件而不是目录,则将其提取到当前目录中。如果项目是目录,则创建该目录。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Code咖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值