[FAQ-Eintrag] Verzeichnis mit Qt rekursiv löschen
-
Hi Leute,
für ein Projekt benötigte ich heute eine Funktion die mir ein Verzeichnis samt Inhalt rekursiv löschen kann. Da das beim Qt-Framework von Hause nicht dabei ist musste ich mir was eigenes Programmieren. Dann fiehl mir der FAQ-Eintrags im Linux-Forum* auf und ich passte die Klasse/Funktion meinen Anforderungen an.
*was auch immer er da zu suchen hat!
Hier meine Version der Funktion:
/* Löscht das übergebene Verzeichnis samt Inhalt rekursiv. per #include müssen folgende Dateien dafür eingebunden werden: - <QDir> - <QFile> - <QFileInfo> Basierend auf: http://www.c-plusplus.net/forum/viewtopic-var-t-is-39506.html */ bool recRmDir(const QString &aDirName) { QDir dirName(aDirName); if (dirName.isRelativePath(aDirName)) //If not absolute path, make it absolute dirName.makeAbsolute(); QFileInfoList fList = dirName.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); for (int i = 0; i < fList.count(); ++i) { QFileInfo file(fList.at(i)); if (file.isDir()) recRmDir(file.absoluteFilePath()); else QFile::remove(file.absoluteFilePath()); } dirName.cdUp(); return dirName.rmdir(aDirName); }
Die Logik der Methode/Funktion habe ich nicht geändert, den Quelltext habe aber schon etwas modifiziert und aus der Klasse rausgenommen. Meiner Meinung nach muss für eine einzige Funktion nicht unbedingt eine Klasse geschrieben werden.
Gruß
Rudi GPS: Vielleicht kann das auch in die FAQ