写点什么

QT 实现生成压缩包

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

    阅读完需:约 3 分钟


前言

在程序应用中,文件的上传于下载那肯定是避免不了的。在我今天的写代码时,就用到了这个方法。但是在文件的压缩中有许许多多的方法,我发现了一个比较容易的一句话就可以实现压缩包,但是我没有调试成功,所以用了这个方法。有兴趣的可以试一下他,链接在这里



QString zipName = QString::fromStdString(uuid);
QString zipPath = QString("%1\%2.zip").arg(path).arg(zipName);
复制代码


首先获取他的文件名称,为我们可以用文件夹名来设置压缩包的名称。


 QuaZip zip(zipLocation);
复制代码


将 zipLocation 设置为压缩包的名称


QDir dir(dirPath);    if (!dir.exists())    {        return false;
} QFileInfoList list = dir.entryInfoList();
复制代码


读取需要打包的文件夹 判断文件夹是否存在,在存在的情况下在进行下面的操作



if (fileInfo.isDir()) {
QDir dir(fileInfo.filePath()); if (!dir.exists()) { dir.mkpath(fileInfo.filePath()); } PackZip(fileInfo.filePath(),rootPath,dirName,zip,chPassword); }
复制代码


首先判断当前项是否是文件夹,如果是文件夹需要在进行以此判断,判断文件夹是否存在,如果存在才会进行下列操作,将会再次进入压缩循环,直到是一个文件。


            QString filePath = QString("%1/%2")                    .arg(fileInfo.path())                    .arg(fileInfo.fileName());            QString newRootPath = rootPath.replace("\\","/") + "/";            QString str = filePath;            str.remove(newRootPath);            qDebug() << str;            OneFilePack(filePath,dirName+"/"+str,zip,chPassword);
复制代码


如果当前项不是文件夹,那他就是一个文件了,我们需要获取文件的路径,并且将文件中的文件分隔符进行替换,进行统一化。由于""中不能使用单个的/符号,所以将它进行替换后,在他的后面进行增加,以便于最后的压缩。

总结

由于个人原因,可能部分思路不够清晰,并且在其中可能会有些问题(因为不是全部的代码,再部分的粘贴上有不同),但是可以自己运行成功,欢迎提问!


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

发布于: 刚刚阅读数: 3
用户头像

用户10086

关注

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

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