如何在C#中从单个完整路径创建多个目录?

193

如果你有一个完整的路径,比如:"C:\dir0\dir1\dir2\dir3\dir4\",你应该如何最好地实现它,以使所有目录都存在?

BCL中是否有这样的方法?如果没有,最优雅的方法是什么?

2个回答

414

我会调用 Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\") 方法。

与普遍看法相反,Directory.CreateDirectory 会自动创建不存在的任何父目录。
按照MSDN的说法,按照指定路径创建所有目录和子目录。

如果整个路径已经存在,则不会执行任何操作。(它不会抛出异常)


5
谢谢,我不知道这个。路径必须是一个目录路径,而不是文件路径,对吗? - Joan Venge
34
可以使用 Path.GetDirectoryName 来获取它。 - SLaks
5
应该把它称为CreateDirectoryTree。 - OldSchool
1
谢谢,使用DirectoryInfo.Create()也可以工作。 - Nicolas
@OldSchool,同意,CreateDirectoryTree是个很好的名字。虽然我更喜欢有一个被错误命名的稀有宝石,而不是没有这个宝石 ;) 这个功能在框架中非常非常有用,而且独一无二。 - Andrzej Martyna

3

从完整文件路径创建目录

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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接