1、功能需求
刪除一個目錄(包括目錄本身),同時刪除該目錄中所有文件及目錄(含隱藏的)
2、遇到的問題
qt5中已經有了遞歸刪除目錄的函數--->bool QDir::removeRecursively()
例如:這里要刪除d:/22/33目錄
QDir dir("d:/22/33"); dir.removeRecursively(); //33目錄以及里面的內容全部刪除
但是,如果33目錄中有隱藏的目錄或文件,就會刪除失敗(非隱藏的目錄或文件正常刪除)
那么,在windows下刪除目錄的命令為:rmdir /s /q 目錄路徑
直接用Qprocess調用windows命令怎么樣呢? 呵呵,好像是刪不掉的哦(原因未知)
3、解決辦法
使用腳本刪除目錄(可行):
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();
這樣的話,就可以刪除含有隱藏目錄或文件的目錄了。