Directory.CreateDirectory并不总是创建该文件夹

时间:2015-08-27 19:13:49

标签: c# .net io directory

我在路径C:\Users\MYUSER\Desktop\TEST\上创建了一个文件夹。

我有以下代码:

private const string DIR = @"C:\Users\MYUSER\Desktop\TEST\tmp";

static void Main(string[] args)
{
    if (Directory.Exists(DIR))
        Directory.Delete(DIR);

    for (int i = 0; i < 100; i++)
    {
        var dinfo = Directory.CreateDirectory(DIR);
        Directory.Delete(DIR);
    }

    Directory.CreateDirectory(DIR);
}

当我执行代码时,大多数情况下它运行正常,我可以看到文件夹TEST中有一个文件夹tmp。

我的问题是,有些时候,Directory.CreateDirectory(DIR)根本不创建目录。我甚至检查了它返回的DirectoryInfo,其Exists属性为false,而Directory.CreateDirectory(DIR)将无效,因为该文件夹不存在。对这种奇怪的行为有什么解释吗?

1 个答案:

答案 0 :(得分:1)

有同样的问题。没有发生错误,但根本不会创建文件夹。刚刚发现问题的根源和简单的修复。

我有类似的东西:

Directory.CreateDirectory("/Users/MyAccount/NewFolder");
#Some code...
Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder");

这将无法在其之前创建的目录下创建文件夹。

解决方案:在路径末尾添加斜杠。

而不是:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder");

执行:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder/");

添加尾部斜杠修复了问题,现在它会在100%的时间内创建文件夹。没有更多的问题。