目录
2)删除只读文件夹以及内部所有文件,我是写了个方法,调用即可;
0.背景
项目需要,在做导出时,要先给文件夹打包,然后将原始文件夹删掉,但是我在创建文件夹时发现它是只读的,所以有些方法无法删除文件夹,经上网查阅后,找到了可以删除只读文件夹的方法,特此分享
环境:windows64位 + vscode + qt5.12.10 + c++
1.详细
1)创建文件夹语句
用的是QDir的mkpath方法,参数是指创建目录的位置
创建完成后大家可以右键看一下,这个文件夹是只读的
#include <QDir>
//在当前位置(./)下创建一个文件夹
QDir targetDir(path);
if (!targetDir.exists()) {
if (!targetDir.mkpath(".")) {
return false;
}
}
2)删除只读文件夹以及内部所有文件,我是写了个方法,调用即可;
删除只读文件夹用的是QDir的removeRecursively方法;
调用语句:removeDir(path); //传入的参数是要删除的文件夹的路径
#include <QDir>
#include <QFileInfo>
#include <QFile>
void CExtraProcessMgtWin::removeDir(const QString &dirPath)
{
QDir dir(dirPath);
if (dir.exists()) {
// 删除文件夹内文件
Q_FOREACH(QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
if (info.isDir()) {
removeDir(info.absoluteFilePath());
} else {
QFile file(info.absoluteFilePath());
file.remove();
}
}
// 删除文件夹
if(!dir.removeRecursively()){
return;
}
}
}
--END--