写点什么

Qt 实现解压压缩包

作者:用户10086
  • 2022 年 7 月 11 日
  • 本文字数:891 字

    阅读完需:约 3 分钟


前提要点

在昨天已经更新了关于 QT 实现将文件夹打成压缩包,今天应该挨到解压了,东平西凑终于完成了压缩包的基本处理!


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


第一步:先将压缩包使用解压模式打开,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();
复制代码


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

用户头像

用户10086

关注

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

发布
暂无评论
Qt 实现解压压缩包_qt_用户10086_InfoQ写作社区