QT ZIP
2021-10-14 本文已影响0人
c之气三段
资源静态及用法
https://blog.csdn.net/zhangxuechao_/article/details/83014473
动态可获取压缩文件个数
//引入方法
#include "quazip/quazip.h"
#include "quazip/quazipfile.h"
//使用方法(非静态)
QString path = GlobalData::WORKSPACE;
QDir dir(path);
if(!dir.exists())
dir.mkdir(path);
QString zipPath = QCoreApplication::applicationDirPath() + QDir::separator() + CALC_PACKAGE_NAME;
// 读取压缩文件
QuaZip archive(zipPath);
if (!archive.open(QuaZip::mdUnzip))
return ;
QString dstPath = path;//相对路径一级目录
dstPath.append("/");
int zipCount = archive.getEntriesCount(); // 压缩实体数量(文件或文件夹)
int i = 0; // 已解压数量
QByteArray data;
QuaZipFile zipFile;
QFile dstFile;
for (bool f = archive.goToFirstFile(); f; f = archive.goToNextFile())
{
QString fileName;//文件名
fileName = archive.getCurrentFileName();
QString zipFileName = archive.getZipName();//压缩包路径
zipFile.setZipName(zipFileName);
zipFile.setFileName(fileName);
zipFile.open(QIODevice::ReadOnly);
data = zipFile.readAll();
zipFile.close();
if (fileName.endsWith("/"))
{
dir.mkpath(fileName);
i++;
}
else
{
fileName = dstPath + fileName;
dstFile.setFileName(fileName);
if (!dstFile.open(QIODevice::WriteOnly))
{
return ;
}
dstFile.write(data);
dstFile.close();
i++;
}
emit signal_zipStep(zipCount,i);//触发信号发送压缩步骤
}