最近由于业务需求,需要实现删除某个文件目录下的空文件夹功能,具体看如下代码:
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;
}