日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:wendy_ya ? 更新時間: 2022-09-26 編程語言

一、項目介紹

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

五、效果演示

完整效果如下:

原文鏈接:https://blog.csdn.net/didi_ya/article/details/126087025

欄目分類
最近更新