利用QDir實現刪除選定文件目錄下的空文件夾

一、項目介紹

本文介紹利用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","錯誤");
}

五、效果演示

完整效果如下:

到此這篇關於利用QDir實現刪除選定文件目錄下的空文件夾的文章就介紹到這瞭,更多相關QDir刪除空文件夾內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: