QT 实现生成压缩包
【摘要】 在程序应用中,文件的上传于下载那肯定是避免不了的。在我今天的写代码时,就用到了这个方法。但是在文件的压缩中有许许多多的方法,我发现了一个比较容易的一句话就可以实现压缩包,但是我没有调试成功,所以用了这个方法。有兴趣的可以试一下他,链接在这里。 QString zipName = QString::fromStdString(uuid); QString zipPath = QS...
在程序应用中,文件的上传于下载那肯定是避免不了的。在我今天的写代码时,就用到了这个方法。但是在文件的压缩中有许许多多的方法,我发现了一个比较容易的一句话就可以实现压缩包,但是我没有调试成功,所以用了这个方法。有兴趣的可以试一下他,链接在这里。
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);
如果当前项不是文件夹,那他就是一个文件了,我们需要获取文件的路径,并且将文件中的文件分隔符进行替换,进行统一化。由于""中不能使用单个的/符号,所以将它进行替换后,在他的后面进行增加,以便于最后的压缩。
总结
由于个人原因,可能部分思路不够清晰,并且在其中可能会有些问题(因为不是全部的代码,再部分的粘贴上有不同),但是可以自己运行成功,欢迎提问!
今天的更新到此结束!欢迎各位大佬批评指正!
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)