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

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

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


person Joan Venge    schedule 25.01.2010    source источник


Ответы (2)


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

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

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

person SLaks    schedule 25.01.2010
comment
Спасибо, я этого не знал. Путь должен быть путем к каталогу, а не к файлу, верно? - person Joan Venge; 25.01.2010
comment
@Джоан: Да; вы можете позвонить Path.GetDirectoryName, чтобы получить его. - person SLaks; 25.01.2010
comment
Он должен был вызвать CreateDirectoryTree - person OldSchool; 07.08.2017

Создать каталоги из полного пути к файлу

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;
}
person Alejandro Aranda    schedule 14.11.2018