QT 实现生成压缩包

举报
咚咚隆地咚 发表于 2022/09/20 17:55:05 2022/09/20
【摘要】 在程序应用中,文件的上传于下载那肯定是避免不了的。在我今天的写代码时,就用到了这个方法。但是在文件的压缩中有许许多多的方法,我发现了一个比较容易的一句话就可以实现压缩包,但是我没有调试成功,所以用了这个方法。有兴趣的可以试一下他,链接在这里。 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

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

全部回复

上滑加载中

设置昵称

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

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

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