亲宝软件园·资讯

展开

QDir删除空文件夹

wendy_ya 人气:1

一、项目介绍

本文介绍利用QDir删除选定文件目录下的所有空文件夹。

二、项目基本配置

新建一个Qt案例,项目名称为“DelTest”,基类选择“QWidget”,点击选中创建UI界面复选框,完成项目创建。

三、UI界面设置

UI界面如下:

序号名称类型属性
pbn_delQPushButtontext:请选择要删除的目录

四、主程序实现

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","错误");
}

五、效果演示

完整效果如下:

加载全部内容

相关教程
猜你喜欢
用户评论