¿Cómo crear múltiples directorios desde una sola ruta completa en C #?

162

Si tiene una ruta completa como: "C:\dir0\dir1\dir2\dir3\dir4\"¿cómo la implementaría mejor para que todos los directorios estén presentes?

¿Hay un método para esto en el BCL? Si no, ¿cuál es la forma más elegante de hacer esto?

Joan Venge
fuente

Respuestas:

346

Yo llamaría Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Contrariamente a la creencia popular, Directory.CreateDirectorycreará automáticamente los directorios principales que no existan.
En palabras de MSDN,Creates all directories and subdirectories as specified by path.

Si toda la ruta ya existe, no hará nada. (No arrojará una excepción)

SLaks
fuente
3
Gracias, no lo sabía. La ruta tiene que ser una ruta de directorio, no una ruta de archivo, ¿verdad?
Joan Venge el
27
@Joan: Sí Puedes llamar Path.GetDirectoryNamepara obtenerlo.
Fallece el
2
Debería haber llamado CreateDirectoryTree
OldSchool
3

Crear directorios desde la ruta de archivo completa

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
fuente