在写入文件之前,请等待文件创建完成

本文关键字:等待 文件创建 文件 | 更新日期: 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);