QuaZIP使用记录

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

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值