Verzeichnis mit Subverzeichnissen erstellen



  • Hallo Zusammen!

    Bin neu hier und brauche gleich mal eure Hilfe in C++.

    Gibt es in C++ einen vorgefertigten Befehl zum Erstellen eines Verzeichnisses und allen nicht vorhandenen Zwischenverzeichnissen.

    Hab beim Googlen schon den Befehl CreateSubdirectory gefunden. Leider weiß ich nicht wie ich den anwende und ob es überhaupt der richtige Befehl dafür ist.

    Vielleicht kann mir jemand einen Tipp geben wie ich den anwende oder einen anderen Befehl vorschlagen.

    Danke schon mal
    lg Harald



  • Falsches Forum. Hier ist nicht C++, hier ist C++/CLI, ein andere eigene Sprache.
    Lies bitte noch das: http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html



  • Danke! Kann ich das irgendwie ins richtige Forum verschieben!

    lg



  • WAS programmierst Du denn jetzt?
    *Reines* C++, dann kann ich Dich nach C++ verschieben...

    Windows C/C++!? Dann kann ich Dich nach Win32 verschieben...

    Oder doch C++/CLI (WinForms), dann bist Du hier richtig...



  • Ich gehe davon aus, dass er C++/CLI .NET programmiert, weil ich glaube, dass er sich auf

    System::IO::DirectoryInfo::CreateSubdirectory();
    

    bezieht. (http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.createsubdirectory%28VS.71%29.aspx)
    Jedenfalls kannst du auch einfach den Befehl

    System::IO::Directory::CreateDirectory(String^ path_of_the_directory_with_all_subdirectories);
    

    verwenden.

    Angenommen bei dir auf dem PC gibt es ein Verzeichnis "C:\Testdirectory" und du verwendest die Funktion

    System::IO::Directory::CreateDirectory("C:\\Testdirectory\\Subdirectory\\Subdirectory_of_Subdirectory");
    

    , dann enthält das Verzeichnis "C:\Testdirectory" einen Ordner namens "Subdirectory", der einen Ordner mit dem Namen "Subdirectory_of_Subdirectory" enthält.

    Alles klar?



  • Danke für die Antworten!

    Ich versuche die Verwirrung aufzulösen. Hab nicht genau gelesen und bin deshalb in das falsche Forum gerutscht!

    Ich arbeite unter der Entwicklungsumgebung Visual Studio 2008. Hab dort einfach ein C++ Projekt angelegt in dem ich jetzt programmiere.

    Und nun mein Problem. Ich übergebe dem Programm einen Pfad, der möglicherweise erst erstellt werden muss. Ich weiß auch nicht ob Zwischenverzeichnisse bereits existieren oder nicht.

    Ich such jetzt nach einem Befehl vergleichbar mit mkdir(), dem ich den Pfad übergebe und der mir die fehlende Verzeichnisstruktur erstellt.
    Bis jetzt fällt mir nur folgende Lösung ein: Ich zerleg den Pfad und prüfe in jeder Tiefe ob der Ordner existiert, wenn nicht erstelle ich ihn mit mkdir(). (Find ich etwas umständlich, hoffe, dass es eine bessere Lösung gibt)

    Ich hoffe jetzt hab ich das halbwegs verständlich ausdrücken können!
    Vielleicht ist jemand so nett und verschiebt mich auf Grund dieser Information ins passende Forum. Vielleicht weiß auch jemand eine Lösung zu dem Problem.

    DANKE

    mfg
    Harald



  • Ich such jetzt nach einem Befehl vergleichbar mit mkdir(), dem ich den Pfad übergebe und der mir die fehlende Verzeichnisstruktur erstellt.

    Die WinAPI kann das nicht. (CreateDirectory(..))

    Bis jetzt fällt mir nur folgende Lösung ein: Ich zerleg den Pfad und prüfe in jeder Tiefe ob der Ordner existiert, wenn nicht erstelle ich ihn mit mkdir(). (Find ich etwas umständlich, hoffe, dass es eine bessere Lösung gibt)

    Das ist eine gute Vorgehensweise falls Du bei "purer" WinAPI bleibst. Du kannst Dir aber auch Libraries angucken, z.B. boost. Ev. kann boost das von Haus aus.

    Simon



  • Danke für die Antworten:

    Hier mein Quelltext für alle die das auch mal brauchen!
    Verbesserungsvorschläge sind natürlich immer gern gesehen

    void MakeDir(CString Path)
    {
    	CString currentPath="";
    	bool first = true;
    	for (int i=0; i < Path.GetLength(); i++) {
    		char ThisChar=Path.GetAt(i);
    		if (ThisChar!='\\') currentPath= currentPath + ThisChar;
    		else if(first) //ersten Backslash ignorieren
    		{
    			currentPath= currentPath + ThisChar;
    			first=false;
    		}
    		else
    		{
    			_mkdir(currentPath);
    			currentPath= currentPath + "\\";
    		}
    	}
    	_mkdir(currentPath);
    }
    

    lg Harald

    PS.: Bitte in richtiges Forum verschieben


Log in to reply