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?

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)


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;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.