QT 实现文件夹的删除

举报
咚咚隆地咚 发表于 2022/09/20 17:55:58 2022/09/20
【摘要】 在我们平时删除文件夹的过程中,我们可以直接删除文件夹,也可以删除文件夹里面内容后在将文件夹删除。在我们使用代码删除文件夹也是同样的逻辑。在我使用文件夹删除时,使用了好几种方法,现在向他们逐一展示。 第一种 使用removeRecursively 的方式进行删除代码:QString delPath = QString("./qqq/aaa");QDir dir;dir.setPath(del...

在我们平时删除文件夹的过程中,我们可以直接删除文件夹,也可以删除文件夹里面内容后在将文件夹删除。在我们使用代码删除文件夹也是同样的逻辑。在我使用文件夹删除时,使用了好几种方法,现在向他们逐一展示。

第一种 使用removeRecursively 的方式进行删除

代码:

QString delPath = QString("./qqq/aaa");

QDir dir;

dir.setPath(delPath);

dir.removeRecursively()

优点:
这个方法可以快速的删除文件夹,可以通过removeRecursively的方法直接删除文件夹包括文件内部所有的东西。
缺点:在使用的过程中,他特别容易出现误删除的情况,有的时候只是为了删除指定的文件夹,但是他有可能删除他的父文件夹,这是在我使用的过程中发现的问题。

第二种 使用rmpath 的方式进行删除

代码:


bool JC_Flie::**DeleteDir**(QString path)

{

    if (path.isEmpty()){

        return false;

    }

    QDir dir(path);

    if(!dir.exists()){

        return true;

    }

    dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤

    QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息

    foreach (QFileInfo file, fileList){ //遍历文件信息

        if (file.isFile()){ // 是文件,删除

            file.dir().remove(file.fileName());

        }else{ // 递归删除

            DeleteDir(file.absoluteFilePath());

        }

    }

    return dir.rmpath(dir.absolutePath()); // 删除文件夹

}

缺点:在文件夹删除的过程中,他需要一直遍历,会比较浪费时间。

优点:在使用过程中相对一第一个方法它更安全,他只是通过便利的方法将文件夹中的每一个文件删除后才会进行删除文件夹的操作。

用法简单介绍

absoluteFilePath它返回的是目录当中文件的绝对路径名,但是他不检查文件是不是存储于当前的目录之下。

absolutePath他通过返回绝对路径,但是他不会包含多余的目录分隔符。

filePath它返回的是 当前文件路径名称。

总结

在进行文件夹慈善出的时候踩到的一些坑,在这里进行了讲解,但是由于新手,可能在部分没有完全的认识到,如果发现问题,请各位大佬及时指正!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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