一、功能需求windows
刪除一個目錄(包括目錄自己),同時刪除該目錄中全部文件及目錄(含隱藏的)函數
二、遇到的問題spa
qt5中已經有了遞歸刪除目錄的函數--->bool QDir::removeRecursively()blog
例如:這裏要刪除d:/22/33目錄遞歸
QDir dir("d:/22/33"); dir.removeRecursively(); //33目錄以及裏面的內容所有刪除
可是,若是33目錄中有隱藏的目錄或文件,就會刪除失敗(非隱藏的目錄或文件正常刪除)rem
那麼,在windows下刪除目錄的命令爲:rmdir /s /q 目錄路徑qt
直接用Qprocess調用windows命令怎麼樣呢? 呵呵,好像是刪不掉的哦(緣由未知)it
三、解決辦法class
使用腳本刪除目錄(可行):List
QDir dir("d:/22/33"); QFileInfo rmInfo("rm.bat"); if (!rmInfo.exists()) { QFile file("rm.bat"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream text(&file); text << "rmdir /s /q %1"; } file.close(); } QProcess process; process.setWorkingDirectory(QDir::currentPath()); process.start("rm.bat", QStringList() << dir.absolutePath().replace('/', '\\') ); process.waitForFinished();
這樣的話,就能夠刪除含有隱藏目錄或文件的目錄了。