1. 程式人生 > 其它 >Qt 刪除某檔案目錄下的空資料夾

Qt 刪除某檔案目錄下的空資料夾

最近由於業務需求,需要實現刪除某個檔案目錄下的空資料夾功能,具體看如下程式碼:

 1 bool checkFileOrDirExist(const QString qstrFileDirOrPath)
 2 {
 3     bool bRet = false;
 4     QFileInfo objFileInfo(qstrFileDirOrPath);
 5     if(objFileInfo.isFile())
 6     {
 7         bRet = objFileInfo.exists();
 8     }
 9     else if(objFileInfo.isDir())
10 { 11 bRet = objFileInfo.exists(); 12 } 13 else 14 { 15 bRet = false; 16 } 17 18 return bRet; 19 } 20 21 /************************************************** 22 * 功能:刪除空的資料夾 23 * 輸入引數: 24 * qstrDirPath:資料夾路徑 25 * 返回值: 26 * bool:true -- 刪除成功,false -- 刪除失敗
27 * **************************************************/ 28 bool clearEmptyFolder(const QString& qstrDirPath) 29 { 30 bool bRet = true; 31 32 do 33 { 34 if(!checkFileOrDirExist(qstrDirPath)) 35 { 36 bRet = true; 37 break; 38 } 39 40 QDir qdrPath(qstrDirPath);
41 qdrPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); //set filter 42 QFileInfoList lstFileInfo = qdrPath.entryInfoList(); //get all file info 43 foreach(QFileInfo objFileInfo, lstFileInfo) 44 { 45 if(objFileInfo.isDir()) 46 { 47 QString qstrSubFilePath = objFileInfo.absoluteFilePath(); 48 clearEmptyFolder(qstrSubFilePath); 49 50 QDir qdrSubPath(qstrSubFilePath); 51 qdrSubPath.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden); 52 QFileInfoList qlstFileInfo = qdrSubPath.entryInfoList(); 53 if(qlstFileInfo.count() <= 0) 54 { 55 logInfo(QString("remove empty dir: %1.").arg(qstrSubFilePath)); 56 qdrSubPath.rmdir(qstrSubFilePath); 57 } 58 } 59 } 60 61 }while(0); 62 63 return bRet; 64 }