11

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

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

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

    var doesItExists = folder.Exists;
}

如果文件夹不存在,则创建一个文件夹。除了doesItExists总是假的。如果我只是创建它,为什么它会是错误的?

4

3 回答 3

18

中的值folder.Exists缓存。我建议做这个检查:

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

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

于 2013-07-24T16:30:37.823 回答
13

假设它folder是 a DirectoryInfoor FileSystemInfo,它会读取一次它的值,然后返回缓存的值。它不会注意到您已经创建了目录。打电话Refresh()

或者使用Directory.Exists().

于 2013-07-24T16:31:47.777 回答
4

这会让你变得真实,你需要调用 refresh():

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

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

                var doesItExists = folder.Exists;
            }
于 2013-07-24T16:37:16.590 回答