Qt清空文件夹下的内容
你可以使用 QDir
类来清空文件夹下的所有内容。以下是一个示例,展示了如何删除指定文件夹中的所有文件和子文件夹:
#include <QCoreApplication>
#include <QDir>
#include <QFileInfoList>
#include <QDebug>
bool clearDirectory(const QString &dirPath) {
QDir dir(dirPath);
if (!dir.exists()) {
qDebug() << "Directory does not exist:" << dirPath;
return false;
}
// 获取文件夹内所有文件和子文件夹
QFileInfoList fileList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
// 遍历并删除文件和子文件夹
foreach (const QFileInfo &fileInfo, fileList) {
if (fileInfo.isDir()) {
// 如果是文件夹,递归清空
clearDirectory(fileInfo.absoluteFilePath());
dir.rmdir(fileInfo.absoluteFilePath());
} else {
// 如果是文件,直接删除
dir.remove(fileInfo.absoluteFilePath());
}
}
return true;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString folderPath = "path/to/your/folder"; // 替换为目标文件夹路径
if (clearDirectory(folderPath)) {
qDebug() << "Directory cleared successfully!";
} else {
qDebug() << "Failed to clear the directory.";
}
return a.exec();
}
代码解释:
QDir
:用于操作目录。entryInfoList()
:获取文件夹中的所有条目(包括文件和子目录)。- 递归删除:如果目录中包含子文件夹,首先递归调用
clearDirectory
删除子文件夹的内容,然后删除该子文件夹。如果是文件,直接删除。 remove()
和rmdir()
:分别用于删除文件和空文件夹。
这段代码将清空指定目录及其所有子目录中的内容。