Come creare più directory da un singolo percorso completo in C #?


162

Se hai un percorso completo come: "C:\dir0\dir1\dir2\dir3\dir4\"come lo implementeresti meglio in modo che siano presenti tutte le directory?

Esiste un metodo per questo nel BCL? In caso contrario, qual è il modo più elegante per farlo?

Risposte:


346

Vorrei chiamare Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Contrariamente alla credenza popolare, Directory.CreateDirectorycreerà automaticamente qualsiasi directory padre non esiste.
Nelle parole di MSDN,Creates all directories and subdirectories as specified by path.

Se l'intero percorso esiste già, non farà nulla. (Non genererà un'eccezione)


3
Grazie, non lo sapevo. Il percorso deve essere un percorso di directory, non un percorso di file, giusto?
Joan Venge,

27
@Joan: Sì; puoi chiamare Path.GetDirectoryNameper ottenerlo.
SLaks

2
Avrebbe dovuto chiamare CreateDirectoryTree
OldSchool il

3

Crea directory dal percorso file completo

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;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.