我有这段代码:
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()等到它被创建完成后?
答案 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);