Qt之QZipReader解压文件
资源内容介绍
本资源可以参考博客,有详细的说明:https://blog.csdn.net/ManagerUser/article/details/125352499 #include "mainwindow.h"#include "ui_mainwindow.h"#include <private/qzipwriter_p.h>#include <private/qzipreader_p.h>#include <QStandardPaths>#include <QDir>#include <QFileDialog>#pragma execution_character_set("utf-8")MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);}void MainWindow::zipReader(QString filepath, QString savepath){ QZipReader zipreader(filepath); //reader.extractAll(path); // //可加可不加没有什么影响 for (int i = 0; i < zipreader.fileInfoList().size(); ++i) { QFile file(savepath + "/" + zipreader.fileInfoList().at(i).filePath); file.open(QIODevice::WriteOnly); //注意编码问题 QByteArray dt = zipreader.fileInfoList().at(i).filePath.toUtf8(); QString strtemp = QString::fromLocal8Bit(dt); QByteArray array = zipreader.fileData(strtemp); file.write(array); file.close(); } zipreader.close();}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_zipPathBtn_clicked(){ QString documentPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); QString fileName = QFileDialog::getOpenFileName(this, tr("选择zip文件"), documentPath, tr("zip (*.zip *.sanupkg)")); if(fileName.isEmpty()){ return; } ui->zipPathLineEdit->setText(fileName);}void MainWindow::on_savePathBtn_clicked(){ QString documentPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); QString folderPath = QFileDialog::getExistingDirectory(this, "选择保存路径", documentPath); if(folderPath.isEmpty()){ return; } ui->savePathLineEdit->setText(folderPath);}void MainWindow::on_zipReaderBtn_clicked(){ QString zipPath = ui->zipPathLineEdit->text(); QString savePath = ui->savePathLineEdit->text(); zipReader(zipPath, savePath);}