Qt 实现解压压缩包
【摘要】 解压在上网一搜,全部都是统一的答案,我本想着按着方法用,但是老天不饶我!没有使用成功!在后续也有找别的方法,但是都不太行,因此我将他改了改!终于可以被我使用!第一步:先将压缩包使用解压模式打开,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)