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