admin管理员组

文章数量:1516870

最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:

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;
}
/**************************************************
 * 功能:删除空的文件夹
 * 输入参数:
 *      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);      //set filter
        QFileInfoList lstFileInfo = qdrPath.entryInfoList();             //get all file info
        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)
                {
                    logInfo(QString("remove empty dir: %1.").arg(qstrSubFilePath));
                    qdrSubPath.rmdir(qstrSubFilePath);
                }
            }
        }
    }while(0);
    return bRet;
}

本文标签: 指南编程轻松解决