Qt 实现解压压缩包

举报
咚咚隆地咚 发表于 2022/09/20 17:56:45 2022/09/20
【摘要】 解压在上网一搜,全部都是统一的答案,我本想着按着方法用,但是老天不饶我!没有使用成功!在后续也有找别的方法,但是都不太行,因此我将他改了改!终于可以被我使用!第一步:先将压缩包使用解压模式打开,QuaZip::mdUnzip这个是最通用的一种方式,并且都到的帖子下面都有详细展示,我就不一一重复了。QuaZip zip(zipPath); zip.open(QuaZip::mdUnzip...

解压在上网一搜,全部都是统一的答案,我本想着按着方法用,但是老天不饶我!没有使用成功!在后续也有找别的方法,但是都不太行,因此我将他改了改!终于可以被我使用!

第一步:先将压缩包使用解压模式打开,QuaZip::mdUnzip这个是最通用的一种方式,并且都到的帖子下面都有详细展示,我就不一一重复了。

QuaZip zip(zipPath);
    zip.open(QuaZip::mdUnzip); 

第二步:将文件夹打开,并且判断一下这个文件夹是否存在,如果不存在的话再建一个。但是这个创建文件夹的方式我是用的是自己建的一个类,大家可以把它换做通用方式。

QDir tempDir(zipDir);
if(!tempDir.exists(zipDir))
    dir.mkdir(zipDir);

goToFirstFile():他是用来将当前文件设置为存档的第一个文件,

goToNextFile:他是用来将将当前文件设置为存档中的下一个文件
因此可以用他们来设置一个循环


    for (bool suc = zip.goToFirstFile(); suc; suc = zip.goToNextFile())
    {
        QFile dstFile;
        //实际的文件处理
        QuaZipFile zipFile;
        QString qsTempZipName = zip.getZipName();
        zipFile.setZipName(qsTempZipName);
        QString filename = zip.getCurrentFileName();

getCurrentFileNameta:他所获取的是当前文件的路径(看清楚了,是文件路径,不是文件夹的路径!!)

       zipFile.setFileName(filename);
       bool bOpen = zipFile.open(QIODevice::ReadOnly, "123456");
       if(bOpen == false)
           return false;
       QByteArray data = zipFile.readAll();
       zipFile.close();

zipFile.open(QIODevice::ReadOnly, “123456”) 第一个属性 是表示压缩包为仅读取模式,后面的内容填密码就好啦,因为我所有的密码都一样,所以直接填了,大家也可以通过传参来填密码。

接下来将数据重新存储就好啦!

最后一定要记得关闭!!!不管写什么都一定要有始有终!!!!不然会出很多的问题。

    }
    zip.close();

今天的更新到此结束 希望各位大佬批评指正!

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。