最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:
1 bool checkFileOrDirExist(const QString qstrFileDirOrPath)
2 {
3 bool bRet = false;
4 QFileInfo objFileInfo(qstrFileDirOrPath);
5 if(objFileInfo.isFile())
6 {
7 bRet = objFileInfo.exists();
8 }
9 else if(objFileInfo.isDir())
10 {
11 bRet = objFileInfo.exists();
12 }
13 else
14 {
15 bRet = false;
16 }
17
18 return bRet;
19 }
20
21 /**************************************************
22 * 功能:删除空的文件夹
23 * 输入参数:
24 * qstrDirPath:文件夹路径
25 * 返回值:
26 * bool:true -- 删除成功,false -- 删除失败
27 * **************************************************/
28 bool clearEmptyFolder(const QString& qstrDirPath)
29 {
30 bool bRet = true;
31
32 do
33 {
34 if(!checkFileOrDirExist(qstrDirPath))
35 {
36 bRet = true;
37 break;
38 }
39
40 QDir qdrPath(qstrDirPath);
41 qdrPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); //set filter
42 QFileInfoList lstFileInfo = qdrPath.entryInfoList(); //get all file info
43 foreach(QFileInfo objFileInfo, lstFileInfo)
44 {
45 if(objFileInfo.isDir())
46 {
47 QString qstrSubFilePath = objFileInfo.absoluteFilePath();
48 clearEmptyFolder(qstrSubFilePath);
49
50 QDir qdrSubPath(qstrSubFilePath);
51 qdrSubPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);
52 QFileInfoList qlstFileInfo = qdrSubPath.entryInfoList();
53 if(qlstFileInfo.count() <= 0)
54 {
55 logInfo(QString("remove empty dir: %1.").arg(qstrSubFilePath));
56 qdrSubPath.rmdir(qstrSubFilePath);
57 }
58 }
59 }
60
61 }while(0);
62
63 return bRet;
64 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-06-01 Qt QSS QPushButton