在写入文件之前等待创建文件

时间:2015-05-24 00:18:45

标签: c#

我有这段代码:

if (!File.Exists(fileName))
{
    File.Create(fileName);
}
File.WriteAllText(fileName, contents);

但是,每次运行它都会产生IOException:

  

未处理的类型' System.IO.IOException'发生在mscorlib.dll

     

其他信息:该进程无法访问该文件' C:\ Users \ Frankie \ Commander \ config \ freq.txt'因为它正被另一个进程使用。

如何让File.WriteAllText()等到它被创建完成后?

2 个答案:

答案 0 :(得分:2)

WriteAllText方法为您创建文件,因此这就是您所需要的:

if (!File.Exists(fileName))
{
    File.WriteAllText(fileName, contents);
}

如果您不关心可能覆盖文件,您甚至可以省略File.Exists检查,因为WriteAllText将覆盖现有文件。

您原始代码出现问题的原因是File.Create为文件打开了FileStream,因此将其锁定;在你写信之前,你必须先关闭它。

答案 1 :(得分:0)

创建文件后关闭文件:

if (!File.Exists(fileName))
{
    File.Create(fileName).Close();
}
File.WriteAllText(fileName, contents);