c# - 创建和关闭文件后立即读取文件
问题描述
通过 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;
}
}
解决方案
您创建一个空文件以在之后对其进行反序列化。仅当文件存在时才能执行反序列化:
public SettingsModel LoadSettings()
{
var _fullPath = FileHelper.GetFullPath(_fileName);
var settings = File.Exists(_fullPath)
? JsonConvert.DeserializeObject<SettingsModel>(File.ReadAllText(_fullPath))
: new SettingsModel();
return settings;
}
推荐阅读
- angular - Angular 返回预检 CORS 错误,其他工具没有错误
- c++ - C ++:对同一对象的两次单独的“make_shared”调用将创建两个单独且独立的shared_ptr及其控制块?
- python - NameError: 'exit' 未在 cx_Freeze python 中定义
- python - 在 Keras 中进行预测后无法创建混淆矩阵 - 无法处理多标签指示符的混合
- node.js - 如何更新猫鼬列表中的对象(在NodeJS中)
- java - 如何始终从 MySQL 表中选择特定行并通过改造显示在 android TextView 上
- android - 我在导入 androidx.cardview.R 时出错;我该如何解决
- python - 自定义 Matplotlib 颜色图
- arrays - 使用 C 的直接 I/O:数组与指针
- c - x86-64 零标志在内联调用之间清除(和另一个问题)