Как создать несколько каталогов из одного полного пути в 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.

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


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;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.