删除文件夹及内部文件
在使用QT时,有时我们想删除文件,有时我们想删除文件夹,而有时我们却想将文件夹及其内部所有内容全部删除,可能文件夹中嵌套文件夹。因为没有一种可以直接一步全部删除的API,所以就需要我们自己通过递归,编写接口来实现。
//删除文件夹(包括文件夹中的文件及目录)
bool DelDir(const QString &path)
{
if (path.isEmpty()){
return true;
}
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.rmpath(dir.absolutePath()); // 删除文件夹
}
这里传入的文件夹路径,可以是绝对路径,也可以是相对路径。
创建文件夹
创建文件夹就相对简单很多。
QDir dir_Log("./result");
//创建该文件夹
dir_Log.mkpath(".");