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?

Joan Venge
quelle

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)

SLaks
quelle
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;
}
Alejandro Aranda
quelle