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

Bsa*_*sa0 8 .net c# directory io

我在路径上创建了一个文件夹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);
}
Run Code Online (Sandbox Code Playgroud)

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

我的问题是,在其他一些时候,Directory.CreateDirectory(DIR)根本不创建目录.我甚至检查了DirectoryInfo它的回报和它的Exists属性是falseDirectory.CreateDirectory(DIR),因为该文件夹不存在,将无法正常工作.对这种奇怪的行为有什么解释吗?

Asy*_*nok 4

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

我有类似的东西:

Directory.CreateDirectory("/Users/MyAccount/NewFolder");
#Some code...
Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder");
Run Code Online (Sandbox Code Playgroud)

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

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

代替:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder");
Run Code Online (Sandbox Code Playgroud)

做:

Directory.CreateDirectory("/Users/MyAccount/NewFolder/SubFolder/");
Run Code Online (Sandbox Code Playgroud)

添加尾部斜杠解决了该问题,现在可以 100% 成功创建文件夹。没有更多问题了。

  • 我确认在调用 Directory.DeleteDirectory 后 Directory.CreateDirectory 的行为完全不一致 (3认同)
  • 这对我不起作用。该问题仍然重现。 (2认同)