Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不';创建文件夹后是否不存在该文件夹?_C# - Fatal编程技术网

C# 为什么不';创建文件夹后是否不存在该文件夹?

C# 为什么不';创建文件夹后是否不存在该文件夹?,c#,C#,这似乎没有道理,所以我显然做错了什么: DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\Test"); if (folder.Exists == false) { folder.Create(); var doesItExists = folder.Exists; } 如果文件夹不存在,则创建该文件夹。除非doesItExists始终为false。如果我刚刚创建了它,为什么

这似乎没有道理,所以我显然做错了什么:

DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\Test");

if (folder.Exists == false) {
    folder.Create();

    var doesItExists = folder.Exists;
}

如果文件夹不存在,则创建该文件夹。除非
doesItExists
始终为false。如果我刚刚创建了它,为什么会是false?

文件夹.Exists中的值是。我建议进行以下检查:

var doesItExists = Directory.Exists(folder.FullName);

或者,您可以调用
folder.Refresh()
,在创建目录后检查目录是否存在之前更新缓存。请参见此图。

假设
文件夹
目录信息
文件系统信息
,它将读取其值一次,然后返回缓存的值。它没有注意到您已经创建了目录。调用
Refresh()


或者使用
Directory.Exists()

这将使您成为现实,您需要调用refresh():


什么是文件夹?目录类没有创建方法和文件。创建需要文件名参数。它可能是
System.IO.DirectoryInfo
什么是
文件夹
,如何创建它?是否有理由需要这样的缓存?@sircodesalot performance,或者设计者太懒了,没有为此实现一个事件模型。@sircodesalot信不信由你,它被缓存了,这正是问题所在。特别是当调用
Create
方法后它没有刷新时。
            DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\Test");

            if (folder.Exists == false)
            {
                folder.Create();
                folder.Refresh();

                var doesItExists = folder.Exists;
            }