Ordner (mit Inahlt) löschen - C++



  • Hallo!

    Einen Ordner OHNE Inhalt kann man ganz einfach mit diesm Befehl entfernen:

    RemoveDirectory("Pfad");
    

    Doch der Ordner beinhaltet Datein. (Wieviele und welche ist unbekannt)
    Das funktioniert mit diesem Befehl nicht.

    Weiß jemand wie ich dieses Problem löse?

    Danke,
    Der Unbekannt 😞



  • Du gehst rekursiv durch den Verzeichnisbaum. Jedesmal wenn du auf ein Verzeichnis stößt, rufst du deine Funktion wieder mit diesem Verzeichnis als Parameter (Startverzeichnis) auf, bei einer Datei löschst du sie. Am Ende der Funktion löschst du das aktuelle (dann leere) Verzeichnis.

    Ist ganz interessant, sowas mal zu machen (gerade als Anfänger). Ob es auch fertige Funktionen dafür gibt, weiß ich jetzt nicht...



  • Du nutzt vermutlich die WinAPI. Hättest du zu dieser Funktion auch nur einen Blick in die MSDN riskiert, wäre dir geholfen worden:
    http://msdn.microsoft.com/en-us/library/aa365488(VS.85).aspx

    To recursively delete the files in a directory, use the SHFileOperation function.

    Ansonsten wie schon von matze beschrieben das Verzeichnis rekursiv durchgehen und alle Dateien löschen. Immer wenn das gerade durchiterierte Verzeichnis dann leer ist, kannst du es löschen. Wie man ein rekursiv durch ein Verzeichnis iteriert, findest du mit Hilfe der Suchfunktion.

    Greetz



  • Tut mir leid, aber ich, als Anfänger, bin ich noch nie rekursiv durch einen Verzeichnisbaum gegangen 😕
    Könnt ihr mir einen Beispielcode dafür geben oder so?
    MSDN habe ich versucht zu durchsuchen, aber dieses Fachenglisch verstehe ich nicht!

    Danke,
    Der Unbekannte





  • Der_Unbekannte schrieb:

    MSDN habe ich versucht zu durchsuchen, aber dieses Fachenglisch verstehe ich nicht!

    Daran solltest du so früh wie möglich arbeiten. Dieses Fachenglisch ist nämlich das A und O, wenn man C++ lernen will. Der Großteil der Dokumentationen (MSDN sowieso, aber auch Tutorials usw.) ist nunmal in Englisch. Ist auch nicht so schwer.



  • Danke!!
    Super funktioniert.

    Und an meinem Englisch arbeite ich gerade. Aber bei solchen MSDN-Seiten tu ich mir totzdem schwer.

    Trotzdem,
    Danke, Super!! 😃 😃 😃 😃 😃 😃


Anmelden zum Antworten