Qt刪除文件夾


寫的軟件需要進行文件夾的復制,開始不怎么懂就找了個拷貝文件夾的代碼測試了一下,運行程序選擇了源目錄和目標目錄相同進行拷貝,結果悲劇了。因為是遞歸拷貝,導致文件夾被嵌套N層,軟件死機,強制結束后,產生的文件夾有N多層,右鍵刪除說文件名太長無法刪除。網上找了很多方法都無法清理掉這個嵌套的文件夾,折磨了N久,終於想通,既然是Qt生成的嵌套文件夾,為何不用Qt再寫一個刪除的程序呢?於是動手查看help,找API函數說明,碼代碼。

 

//刪除文件夾  
bool MainWindow::DelDir(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()){ // 是文件,刪除  
            file.dir().remove(file.fileName());  
        }else{ // 遞歸刪除  
            DelDir(file.absoluteFilePath());  
        }  
    }  
    return dir.rmpath(dir.absolutePath()); // 刪除文件夾  
}  

  

 

這樣,新建一個QFileDialog傳入文件路徑就可以將文件夾徹底刪除,不用windows的右鍵刪除了。(在這之前還重啟系統去用U盤啟動pe系統來刪除都沒搞定,囧)
使用這個一定要小心,別寫錯刪除了重要的東西,哈哈!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM