一、功能需求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();
这样的话,就能够删除含有隐藏目录或文件的目录了。