在写入文件之前,请等待文件创建完成
本文关键字:等待 文件创建 文件 | 更新日期: 2023-09-27 17:50:29
我有这样的代码:
if (!File.Exists(fileName))
{
File.Create(fileName);
}
File.WriteAllText(fileName, contents);
然而,每次我运行它,我得到一个IOException:
未处理的System.IO类型异常。
mscorlib.dll附加信息:该进程无法访问文件"C:'Users'Frankie'Commander'config'freq.txt",因为该文件正在被其他进程使用。
我如何使File.WriteAllText()等待,直到它被创建完成?
WriteAllText
方法为您创建了这个文件,所以这就是您所需要的:
if (!File.Exists(fileName))
{
File.WriteAllText(fileName, contents);
}
如果您不关心可能覆盖文件,您甚至可以忽略File.Exists
检查,因为WriteAllText
将覆盖现有文件。
原始代码出现问题的原因是File.Create
为文件打开了FileStream
,并将其锁定;您必须先关闭它,然后才能写入。
创建完成后关闭文件:
if (!File.Exists(fileName))
{
File.Create(fileName).Close();
}
File.WriteAllText(fileName, contents);