写点什么

QT 实现文件夹的删除

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

    阅读完需:约 3 分钟


前提

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

第一种 使用 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 它返回的是 当前文件路径名称。

总结

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

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

用户10086

关注

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

发布
暂无评论
QT 实现文件夹的删除_qt_用户10086_InfoQ写作社区