Jak utworzyć wiele katalogów z jednej pełnej ścieżki w C #?

162

Jeśli masz pełną ścieżkę, taką jak: "C:\dir0\dir1\dir2\dir3\dir4\"jak najlepiej ją zaimplementować, aby wszystkie katalogi były obecne?

Czy istnieje na to metoda w BCL? Jeśli nie, jaki jest najbardziej elegancki sposób na zrobienie tego?

Joan Venge
źródło

Odpowiedzi:

346

Zadzwoniłbym Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Wbrew powszechnemu przekonaniu, Directory.CreateDirectoryautomatycznie utworzy katalogi nadrzędne, które nie istnieją.
Słowami MSDN,Creates all directories and subdirectories as specified by path.

Jeśli cała ścieżka już istnieje, nic nie da. (To nie zgłosi wyjątku)

SLaks
źródło
3
Dzięki, nie wiedziałem tego. Ścieżka musi być ścieżką do katalogu, a nie ścieżką do pliku, prawda?
Joan Venge
27
@Joan: Tak; możesz zadzwonić Path.GetDirectoryNamepo to.
SLaks
2
Powinien był nazwać CreateDirectoryTree
OldSchool
3

Twórz katalogi na podstawie pełnej ścieżki pliku

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
źródło