Як створити кілька каталогів з одного повного шляху в C #?


162

Якщо у вас є повний шлях на кшталт: "C:\dir0\dir1\dir2\dir3\dir4\"як би ви найкраще його реалізували, щоб усі каталоги були присутніми?

Чи є метод для цього в БКЛ? Якщо ні, то який найелегантніший спосіб зробити це?

Відповіді:


346

Я б подзвонив Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Всупереч загальноприйнятій думці, Directory.CreateDirectoryавтоматично буде створено те, що не існує в батьківських каталогах.
За словами MSDN,Creates all directories and subdirectories as specified by path.

Якщо весь шлях вже існує, він нічого не зробить. (Це не кине виняток)


3
Спасибі, я цього не знав. Шлях повинен бути шлях до каталогу, а не шлях до файлу, правда?
Джоан Венге

27
@Joan: Так; Ви можете зателефонувати, Path.GetDirectoryNameщоб отримати його.
СЛАкс

2
Це повинно було називати CreateDirectoryTree
OldSchool

3

Створюйте каталоги з повного файлового шляху

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;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.