QT 实现生成压缩包

248 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情

前言

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


    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);

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

总结

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

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