Comment créer plusieurs répertoires à partir d'un seul chemin complet en C #?

162

Si vous avez un chemin complet comme: "C:\dir0\dir1\dir2\dir3\dir4\"comment l'implémenter au mieux pour que tous les répertoires soient présents?

Existe-t-il une méthode pour cela dans la BCL? Sinon, quelle est la manière la plus élégante de le faire?

Joan Venge
la source

Réponses:

346

J'appellerais Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\").

Contrairement à la croyance populaire, Directory.CreateDirectorycréera automatiquement les répertoires parents qui n'existent pas.
Dans les mots de MSDN,Creates all directories and subdirectories as specified by path.

Si le chemin complet existe déjà, il ne fera rien. (Cela ne lèvera pas d'exception)

SLaks
la source
3
Merci, je ne savais pas ça. Le chemin doit être un chemin de répertoire, pas un chemin de fichier, non?
Joan Venge
27
@Joan: Oui; vous pouvez appeler Path.GetDirectoryNamepour l'obtenir.
SLaks
2
Il aurait dû s'appeler CreateDirectoryTree
OldSchool
3

Créer des répertoires à partir du chemin de fichier complet

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
la source