Como criar vários diretórios a partir de um único caminho completo em c #?

162

Se você possui um caminho completo como: "C:\dir0\dir1\dir2\dir3\dir4\"como você o implementaria melhor para que todos os diretórios estivessem presentes?

Existe um método para isso na BCL? Caso contrário, qual é a maneira mais elegante de fazer isso?

Joan Venge
fonte

Respostas:

346

Eu ligaria Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Ao contrário da crença popular, Directory.CreateDirectorycriará automaticamente os diretórios pai que não existirem.
Nas palavras do MSDN,Creates all directories and subdirectories as specified by path.

Se o caminho inteiro já existir, ele não fará nada. (Não lançará uma exceção)

SLaks
fonte
3
Obrigado, eu não sabia disso. O caminho tem que ser um caminho de diretório, não um caminho de arquivo, certo?
Joan Venge
27
@ Joan: Sim; você pode ligar Path.GetDirectoryNamepara obtê-lo.
SLaks
2
Deveria ter chamado CreateDirectoryTree
OldSchool 7/17
3

Crie diretórios a partir do caminho completo do arquivo

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;
}
Alejandro Aranda
fonte