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


162

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

BCL中有针对此的方法吗?如果没有,最优雅的方法是什么?

Answers:


346

我会打电话给Directory.CreateDirectory(@"C:\dir0\dir1\dir2\dir3\dir4\")

与流行的看法相反,Directory.CreateDirectory它将自动创建不存在的任何父目录。
用MSDN的话来说,Creates all directories and subdirectories as specified by path.

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


3
谢谢,我不知道。该路径必须是目录路径,而不是文件路径,对吗?
Joan Venge

27
@Joan:是的;您可以致电Path.GetDirectoryName获取。
SLaks 2010年

2
它应该叫CreateDirectoryTree
OldSchool'Aug 7'7

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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.