今天做一个项目需要删除指定路径下的所有文件夹,上网找了下,有人说只能删除空文件夹,如果有文件或子文件夹需要遍历删除,也有人说是可以直接删除,只能实际验证下。以下两种方法都可以删除文件夹内的所有子文件夹和文件:
1.通过QDir 中的removeRecursively()方法删除,例如
Qstring dir="D:\\DATA";
QDir qdir(dir);
qdir.removeRecursively();
2、通过遍历的方法逐一删除,例如
bool 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.rmdir(dir.absolutePath()); // 删除文件夹
}