qtでディレクトリとその中のファイルを削除する方法は?
Qtで、ディレクトリとその中のファイルを削除するために、QDirクラスのremoveRecursivelyメソッドを使用することができます。以下に示す例をご参照ください。
#include <QDir>
#include <QDebug>
void removeDirectory(const QString& path)
{
QDir dir(path);
if (dir.exists()) {
// 获取目录下所有文件和子目录
QStringList fileList = dir.entryList(QDir::AllEntries | QDir::NoDotAndDotDot);
// 遍历子文件和子目录
foreach(const QString& fileName, fileList) {
QString filePath = dir.filePath(fileName);
QFileInfo fileInfo(filePath);
// 如果是文件则直接删除
if (fileInfo.isFile()) {
QFile::remove(filePath);
}
// 如果是目录则递归调用removeDirectory删除子目录
else if (fileInfo.isDir()) {
removeDirectory(filePath);
}
}
// 删除目录
dir.rmdir(path);
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString path = "your_directory_path";
removeDirectory(path);
return a.exec();
}
上記の例のコードでは、removeDirectory関数が再帰的な方法でディレクトリとその子ファイルを削除しています。まず、ディレクトリが存在するかどうかを判断し、存在する場合はディレクトリ内のすべてのファイルとサブディレクトリを取得します。次に、サブファイルとサブディレクトリを反復処理し、ファイルであれば直接削除し、ディレクトリであればremoveDirectory関数を再帰的に呼び出してサブディレクトリを削除します。最後に、ディレクトリ自体を削除します。