首页 > 解决方案 > 创建和关闭文件后立即读取文件

问题描述

通过 File.Create 创建文件后,我想稍后使用 File.ReadAllText 读取它。但是,我总是收到一个异常,指出该进程无法访问该文件。创建文件后,访问将毫无问题。所以我假设文件在应该被读取的时候还没有被 File.Create 发布。我该如何解决这个问题?下面是我的方法。

    public SettingsModel LoadSettings()
    {
        var _fullPath = FileHelper.GetFullPath(_fileName);
        if (!File.Exists(_fullPath))
        {
            File.Create(_fullPath).Close();
        }
        var serializedSettings = File.ReadAllText(_fullPath);
        var settings = JsonConvert.DeserializeObject<SettingsModel>(serializedSettings);

        if (settings == null)
        {
            return new SettingsModel();
        }
        else
        {
            return settings;
        }
    }

标签: c#file

解决方案


您创建一个空文件以在之后对其进行反序列化。仅当文件存在时才能执行反序列化:

public SettingsModel LoadSettings()
{
    var _fullPath = FileHelper.GetFullPath(_fileName);
    var settings = File.Exists(_fullPath) 
        ? JsonConvert.DeserializeObject<SettingsModel>(File.ReadAllText(_fullPath))
        : new SettingsModel();
    return settings;
}


推荐阅读