1、将多个文件压缩成一个压缩包
JlCompress::compressFiles("zip文件路径",QStringList()/*文件路径列表*/);
2、加密压缩多个文件
//生成MD5加密
QString strMD5 = QCryptographicHash::hash(QByteArray("123456"), QCryptographicHash::Md5).toHex();
QuaZip newZip("zip文件路径");//要生成的zip文件
QStringList filePathList;//要压缩的文件路径列表
QStringList fileNameList;//filePathList中文件的文件名
if (newZip.open(QuaZip::mdCreate))
{
QuaZipFile file(&newZip);
qDebug()<<"密码"<<strMD5.toUtf8().constData();
for (int i = 0;i < fileNameList.size();++i)
{
QuaZipNewInfo info("resource/" + fileNameList[i], filePathList[i]);
if (file.open(QIODevice::WriteOnly,info,strMD5.toUtf8().constData(),0,8))
{
QFile file2(filePathList[i]);
if (file2.open(QIODevice::ReadOnly))
{
file.write(file2.readAll());
file2.close();
}
file.close();
}
}
QuaZipNewInfo info("ui.json", newUiFilePath);
if (file.open(QIODevice::WriteOnly,info,strMD5.toUtf8().constData(),0,8))
{
if(newUiFile.open(QIODevice::ReadOnly))
{
file.write(newUiFile.readAll());
newUiFile.close();
}
file.close();
}
newZip.close();
}
效果:
3、解压含密码的压缩文件
QString strMD5 = QCryptographicHash::hash(QByteArray("123456"), QCryptographicHash::Md5).toHex();
QuaZip newZip(zipFilePath);
QString tempFolderPath = filePath + QStringLiteral("/tempFolder") + fileInfo.fileName() + "/";
if(newZip.open(QuaZip::mdUnzip))
{
for (bool f = newZip.goToFirstFile();f;f= newZip.goToNextFile())
{
auto fileName = newZip.getCurrentFileName();
auto unZipFileName = fileName;
unZipFileName.remove("resource/");
QuaZipFile zipFile(newZip.getZipName(),fileName);
if(zipFile.open(QIODevice::ReadOnly,strMD5.toUtf8().constData()))
{
QFile unZipFile(tempFolderPath + unZipFileName);
if(unZipFile.open(QIODevice::WriteOnly))
{
unZipFile.write(zipFile.readAll());
unZipFile.close();
}
zipFile.close();
}
}
newZip.close();
}