QDir删除空文件夹
wendy_ya 人气:1一、项目介绍
本文介绍利用QDir删除选定文件目录下的所有空文件夹。
二、项目基本配置
新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。
三、UI界面设置
UI界面如下:
序号 | 名称 | 类型 | 属性 |
---|---|---|---|
① | pbn_del | QPushButton | text:请选择要删除的目录 |
四、主程序实现
4.1 widget.h头文件
头文件中只需声明按钮点击槽函数:
private slots: void on_pbn_del_clicked();
4.2 widget.cpp源文件
定义函数checkFileOrDirExist检查目录是否存在:
bool checkFileOrDirExist(const QString qstrFileDirOrPath) { bool bRet = false; QFileInfo objFileInfo(qstrFileDirOrPath); if(objFileInfo.isFile()) { bRet = objFileInfo.exists(); } else if(objFileInfo.isDir()) { bRet = objFileInfo.exists(); } else { bRet = false; } return bRet; }
定义clearEmptyFolder用于删除空的文件夹,返回的类型为bool类型若为true则表示删除成功,若为false则表示删除失败:
/************************************************** * 功能:删除空的文件夹 * 输入参数: * qstrDirPath:文件夹路径 * 返回值: * bool:true -- 删除成功,false -- 删除失败 * **************************************************/ bool clearEmptyFolder(const QString& qstrDirPath) { bool bRet = true; do { if(!checkFileOrDirExist(qstrDirPath)) { bRet = true; break; } QDir qdrPath(qstrDirPath); qdrPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); //设置过滤器 QFileInfoList lstFileInfo = qdrPath.entryInfoList(); //获取所有文件信息 foreach(QFileInfo objFileInfo, lstFileInfo) { if(objFileInfo.isDir()) { QString qstrSubFilePath = objFileInfo.absoluteFilePath(); clearEmptyFolder(qstrSubFilePath); QDir qdrSubPath(qstrSubFilePath); qdrSubPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); QFileInfoList qlstFileInfo = qdrSubPath.entryInfoList(); if(qlstFileInfo.count() <= 0) { qDebug()<<QString("remove empty dir: %1.").arg(qstrSubFilePath); qdrSubPath.rmdir(qstrSubFilePath); } } } }while(0); return bRet; }
按钮点击槽函数:
void Widget::on_pbn_del_clicked() { //选择文件目录 QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), "", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); qDebug()<<dir; bool isok=clearEmptyFolder(dir); if(isok) QMessageBox::information(this,"success","删除完成"); else QMessageBox::information(this,"error","错误"); }
五、效果演示
完整效果如下:
加载全部内容