这似乎没有意义,所以我显然做错了什么:
DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\Test");
if (folder.Exists == false) {
folder.Create();
var doesItExists = folder.Exists;
}
如果文件夹不存在,则创建该文件夹。 doesItExists
除外总是假的。如果我刚刚创建它,为什么会这样呢?
答案 0 :(得分:17)
folder.Exists
中的值为cached。我建议做这个检查:
var doesItExists = Directory.Exists(folder.FullName);
或者您可以在创建目录之前检查目录是否存在之前调用folder.Refresh()
来更新缓存。请参阅此previous answer。
答案 1 :(得分:12)
假设folder
是DirectoryInfo
或FileSystemInfo
,它会读取一次值,然后返回缓存值。它没有注意到您已创建目录。致电Refresh()
。
或者使用Directory.Exists()
。
答案 2 :(得分:3)
这会让你变为现实,你需要调用refresh():
DirectoryInfo folder = new DirectoryInfo(Environment.CurrentDirectory + @"\Test");
if (folder.Exists == false)
{
folder.Create();
folder.Refresh();
var doesItExists = folder.Exists;
}