Как создать несколько каталогов из одного полного пути в C #?

162

Если у вас есть полный путь, например: "C:\dir0\dir1\dir2\dir3\dir4\"как бы вы лучше его реализовали, чтобы присутствовали все каталоги?

Есть ли способ для этого в BCL? Если нет, то какой самый элегантный способ сделать это?

Джоан Венге
источник

Ответы:

346

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

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

Если весь путь уже существует, он ничего не сделает. (Это не будет бросать исключение)

SLaks
источник
3
Спасибо, я этого не знал. Путь должен быть путем к каталогу, а не к файлу, верно?
Джоан Венге
27
@Joan: Да; Вы можете позвонить, Path.GetDirectoryNameчтобы получить это.
SLaks
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;
}
Алехандро Аранда
источник