【发布时间】:2021-08-07 10:16:32
【问题描述】:
通过 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;
}
}
【问题讨论】:
-
尝试使用using clause pattern for IDisposable 以确保释放 Windows 资源并处理任何自己的锁。
-
@OlivierRogier 使用相同的问题(StreamWriter sw = new StreamWriter(_fullPath, true)) { }
-
Lockhunter 说文件被它自己的应用程序阻止了。
-
我必须道歉,错误是在耳朵之间。在 GetFullPath 方法中,我已经检查了文件是否存在并在必要时创建它。我仍然感谢大家的支持。