Qt遞迴刪除資料夾下的所有檔案,而不刪除自己
阿新 • • 發佈:2020-12-10
Qt遞迴刪除資料夾下的所有檔案,而不刪除自己
當我們遞迴刪除資料夾下的所有檔案時,發現指定的資料夾本身也刪除了,比如我們刪除 "E:/testTemp/qftp" 這個資料夾時,連自己qftp這個資料夾也跟著刪除了,那麼有辦法只刪除qftp資料夾下的所有子檔案,而不刪除qftp本身這個資料夾呢?
直接上程式碼:
//遞迴刪除資料夾下的所有檔案 bool clearTempFiles(const QString& path) { if (path.isEmpty()){ return false; } QDir dir(path); if(!dir.exists()){ return true; } dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //設定過濾 QFileInfoList fileList = dir.entryInfoList(); // 獲取所有的檔案資訊 foreach (QFileInfo file, fileList){ //遍歷檔案資訊 if (file.isFile()){ // 是檔案,刪除 if(file.fileName() == ".") //E:/testTemp/qftp 不刪除本身qftp資料夾 { continue; } file.dir().remove(file.fileName()); // file.dir().removeRecursively() }else{ // 遞迴刪除 clearTempFiles(file.absoluteFilePath()); } } // return dir.rmpath(dir.absolutePath()); // 刪除資料夾 QString strDirName = dir.absolutePath(); if (strDirName != "E:/testTemp/qftp") { return dir.rmdir(dir.absolutePath()); } return true; }