Wie erstelle ich mehrere Verzeichnisse aus einem einzigen vollständigen Pfad in C #?


160

Wenn Sie einen vollständigen Pfad haben wie: "C:\dir0\dir1\dir2\dir3\dir4\"Wie würden Sie ihn am besten implementieren, damit alle Verzeichnisse vorhanden sind?

Gibt es dafür eine Methode in der BCL? Wenn nicht, wie geht das am elegantesten?

Antworten:


345

Ich würde anrufen Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Entgegen der landläufigen Meinung Directory.CreateDirectorywerden automatisch die übergeordneten Verzeichnisse erstellt, die nicht vorhanden sind.
In den Worten von MSDNCreates all directories and subdirectories as specified by path.

Wenn der gesamte Pfad bereits vorhanden ist, wird nichts unternommen. (Es wird keine Ausnahme auslösen)


3
Danke, das wusste ich nicht. Der Pfad muss ein Verzeichnispfad sein, kein Dateipfad, oder?
Joan Venge

27
@ Joan: Ja; Sie können anrufen Path.GetDirectoryName, um es zu bekommen.
SLaks

2
Es sollte CreateDirectoryTree
OldSchool

2

Erstellen Sie Verzeichnisse aus dem vollständigen Dateipfad

private String EvaluatePath(String path){

    try
    {
        String folder = Path.GetDirectoryName(path);
        if (!Directory.Exists(folder))
        {
            // Try to create the directory.
            DirectoryInfo di = Directory.CreateDirectory(folder);
        }
    }
    catch (IOException ioex)
    {
        Console.WriteLine(ioex.Message);
        return "";
    }
    return path;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.