在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函數刪除子目錄。最后刪除目錄本身。