Qt删除文件夹及子文件夹全部文件时父文件夹一并删除的原因与解决办法

初学Qt文件操作,总会先去查阅各种资料,参考各种代码然后一点点地去调试。
我在编写“删除文件夹及子目录与所有文件”代码的时候,参考很多博客、专栏之后看到很多都是同样的代码。如下:

//删除文件夹
bool MainWindow::DelDir(const 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{ // 递归删除DelDir(file.absoluteFilePath());}}return dir.rmpath(dir.absolutePath()); // 删除文件夹
}

这个代码我拿来做测试,发现将父文件夹一并删除了,然后在父文件夹中随便建立一个txt文本再进行测试发现,父文件保留了下来,因此猜测:程序中存 “在当父文件夹为空时,删除文件夹路径时将一并删除父文件夹路径” 。
因此去查看代码与函数方法性质,同时在IDE上测试。
在路径方法上做测试的时候,输入“dir.rm”发现有两个方法:
1、rmpath;
2、rmdir;
故去查找函数方法介绍,得其原因,rmpath与rmdir的区别就在于:rmpath会在删除空文件夹的时候,将空的父文件夹一并删除。将rmpath换成rmdir后,问题解决。

附:个人觉得在查阅博客资料之后一定要做尽量多种情况的测试,并且将实际情况考虑完全,在代码中优化。
例:若是某目录的子目录不存在,可直接用mkdir创建子目录,倘若当前目录或者其父目录不存在呢?

阿猪米德
2019.05.09于湖北武汉

Qt删除文件夹时父文件夹一并删除的原因与解决办法相关推荐

  1. android启动画面白屏,Android app启动时黑屏或者白屏的原因及解决办法

    1.产生原因 其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景. 示例: 2.解决办法 通过设置设置Style (1)设置背 ...

  2. 文件夹(system.)无法删除,打开时提示“引用了一个不可用的位置” 解决办法

    前几天一个同事说家里电脑中的有些文件夹需要加密,希望我给他想想办法,于是乎网上下了N个文件夹加密的软件,在自己电脑上试验,最终试验出"宏杰文件夹加密"最好用,还免费,呵呵. 但是试 ...

  3. MDK Keil 工程的Group文件夹图标显示雪花(星号)的原因及解决办法

    原因之一:如上图所示,Group ald的Options里的Include Paths 有内容,导致ald的文件夹图标显示雪花 其它原因也可能导致Group的文件夹图标显示雪花. 解决办法:将Grou ...

  4. python中文件保存时,出现OSError:[Errno 22] Invalid argument解决办法

    1代码执行后报错内容: 2这类问题归结就是对文件中字符串的处理(换行'\n'.空格' '.回车'\r'的处理) 3目的是:将字符串类型数据的多行数据,合并为一行,进行输出来用 去除空格的几种形式 &q ...

  5. springboot使用thymeleaf模板引擎时出现org.xml.sax.SAXParseException的原因与解决办法

    异常描述: 在springboot程序当中,使用thymeleaf作为视图的时候,跳转到页面上的时候,会出现org.xml.sax.SAXParseException的异常(SAX解析器解析xml文件 ...

  6. [Phone]在使用充电器时屏幕不灵敏或失灵的原因及解决办法

    首先,我们要清楚我们的DS是电容式触摸屏.我简略的描述下电容屏的工作原理,如有错误还请纠正.当然大家也可以自己搜索一下. 上图是百度百科中"电容式触摸屏"的工作原理图,图中表达的是 ...

  7. 关于复制文件或文件夹时提示没有足够的可用磁盘空间的解决办法-释放磁盘空间,磁盘整理

    问题特征:无法复制***:没有足够的可用磁盘空间. 问题详情:硬盘还剩好几十G的空间,但复制一个4G多的文件却提示: 无法复制***:没有足够的可用磁盘空间. 请删除部分文件以释放磁盘空间,然后再试. ...

  8. 删除某个文件或文件夹时,系统提示无法删除!

    经常上网的朋友有时会遇到删除某个文件或文件夹时,系统提示无法删除! 是不是很郁闷?其实大家没必要苦恼,事情要一分为二的分析.这正是微软人性化的一面,并不是所有人都象你一样是超超超级电脑高手!哈哈~~ ...

  9. 用DirectoryInfo搜索文件夹时过滤隐藏文件夹

    用DirectoryInfo搜索文件夹时过滤隐藏文件夹2009-07-04 11:50用DirectoryInfo.GetDirectories();搜索文件夹的时候.总是连隐藏的也搜索出来.有的时候 ...

最新文章

  1. R语言基于日期范围筛选数据实战(Subset by a Date Range):日期范围之内的数据、日期范围之外的数据、日期之后的数据、日期之前的数据
  2. memcached安装配置
  3. npm修改默认安装路径和数据源
  4. scroll-view 横向滑动无效的问题
  5. 高能街访 | 为什么他们都纷纷为深圳打Call?
  6. 设计表的时候,对变长字段长度选择的一点思考
  7. synchronized同步机制
  8. 如何解决Backup Exec Remote Agent推送安装失败的问题
  9. ActionFilterAttribute
  10. MyBatis要不要学?京东内部的这份MyBatis文档真香!
  11. 坐标计算距离公式 火星坐标系_地图坐标转换 -- 火星坐标与GPS坐标
  12. 修改VNR源码接入新版有道中文翻译API
  13. 国庆长假自驾游推荐路线
  14. 新疆几十公里花海开始盛放,一株580年最老野树,开出最艳鲜花
  15. 批处理CMD显示彩色文字
  16. Golang的Panic和Recover
  17. 人脸扫描建模_黑科技 | 3D人脸建模可以多简单?一张照片就搞定!
  18. 微信能扶起微视这个“阿斗”吗?[联络易]
  19. commvault备份mysql数据库_Commvault数据备份恢复平台-功能测试报告.pdf
  20. EbNo与SNR关系

热门文章

  1. linux之文件管理
  2. MySQL数据库基础知识11,查询缓存
  3. 一个靠谱的国外maven镜像地址
  4. 音频转文字有什么方法?怎么将音频转文字?
  5. 监控linux系统状态
  6. 记录python量化学习过程
  7. POJ-1182 食物链
  8. 资源 | 嵌入式资源汇总,拿走不谢
  9. 数控系统ftp服务器,数控系统的网络支持技术( 上)
  10. 使用手机微信小程序如何在线打印发来的文件资料?