qt5中已经有了递归删除目录的函数—->bool QDir::removeRecursively()
例如:这里要删除d:/22/33目录
QDir dir("d:/22/33");
dir.removeRecursively(); // 33目录以及里面的内容全部删除
但是,如果33目录中有隐藏的目录或文件,就会删除失败(非隐藏的目录或文件正常删除)
那么,在windows下删除目录的命令为:rmdir /s /q 目录路径
直接用Qprocess调用windows命令怎么样呢? 呵呵,好像是删不掉的哦(原因未知)
解决办法
使用脚本删除目录(可行):
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();
这样的话,就可以删除含有隐藏目录或文件的目录了。