利用QDir实现删除选定文件目录下的空文件夹的攻略如下:
- 通过QDir::entryList()函数获取被选中文件夹的所有子文件夹和子文件的信息,并将它们放入一个QStringList中;
- 遍历上一步得到的QStringList,使用QDir::isEmpty()函数判断每个子文件夹是否为空,若为空,则递归删除该文件夹;
- 在递归删除时,应当从当前文件夹开始,循环遍历该文件夹内的所有子文件和子文件夹,并递归执行第2步操作;
- 最终完成查找和删除操作之后,应该使用QMessageBox::information()函数提示用户,查找和删除已完成。
下面是两个示例:
- 删除选定目录下所有空文件夹(示例输入:“/Users/username/Desktop/test”,表示删除/Users/username/Desktop/test目录下的所有空文件夹)。
```
#include
#include
#include
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QString path = "/Users/username/Desktop/test";
QDir dir(path);
QStringList subdirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach(QString subdir, subdirs) {
QDir sub(subdir);
if (sub.isEmpty()) {
qDebug() << "Deleting empty dir:" << subdir;
sub.removeRecursively();
}
}
return a.exec();
}
```
- 删除选定目录及其子目录下所有空文件夹(示例输入:“/Users/username/Desktop/test”,表示删除/Users/username/Desktop/test及其子目录下所有空文件夹)。
```
#include
#include
#include
void removeEmptyDirs(QString path) {
QDir dir(path);
QStringList subdirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach(QString subdir, subdirs) {
removeEmptyDirs(path + QDir::separator() + subdir);
}
if (dir.isEmpty()) {
qDebug() << "Deleting empty dir:" << path;
dir.rmdir(path);
}
}
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QString path = "/Users/username/Desktop/test";
removeEmptyDirs(path);
return a.exec();
}
```
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用QDir实现删除选定文件目录下的空文件夹 - Python技术站