创建目录不会将Exists属性更新为true

时间:2016-04-20 07:49:00

标签: c# io fileinfo directoryinfo

我有以下示例代码。

private DirectoryInfo PathDirectoryInfo
{
    get
    {
        if (_directoryInfo == null)
        {
            // Some logic to create the path
            // var path = ...
            _directoryInfo = new DirectoryInfo(path);
        }
        return _directoryInfo;
    }
}

public voide SaveFile(string filename)
{
    if (!PathDirectoryInfo.Exists)
    {
         PathDirectoryInfo.Create();
    }

     // PathDirectoryInfo.Exists returns false despite the folder has been created.
     bool folderCreated = PathDirectoryInfo.Exists;  // folderCreated  == false

    // Save the file
    // ...
}

根据MSDN

  

存在属性:如果文件或目录存在,则为true;否则为false。否则,错误。

为什么Exists在创建目录后返回false?我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

您可以将您的财产更改为:

private DirectoryInfo PathDirectoryInfo
{
    get
    {
        if (_directoryInfo == null)
        {
            // Some logic to create the path
            // var path = ...
            _directoryInfo = new DirectoryInfo(path);
        }
        else
        {
            _directoryInfo.Refresh();
        }

        return _directoryInfo;
    }
}

这将确保您在获得财产价值时始终使用当前信息。

那就是说,如果你没有在两者之间再次获得财产价值,它将无济于事。你是在你的情况下。