1. 程式人生 > 其它 >Qt遞迴刪除資料夾下的所有檔案,而不刪除自己

Qt遞迴刪除資料夾下的所有檔案,而不刪除自己

技術標籤:Qtqt遞迴刪除資料夾不刪除自己

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;
}

工程完整程式碼