Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在写入文件之前,请等待创建文件_C# - Fatal编程技术网

C# 在写入文件之前,请等待创建文件

C# 在写入文件之前,请等待创建文件,c#,C#,我有以下代码: if (!File.Exists(fileName)) { File.Create(fileName); } File.WriteAllText(fileName, contents); 但是,每次运行它时,都会出现IOException: mscorlib.dll中发生类型为“System.IO.IOException”的未处理异常 其他信息:进程无法访问文件“C:\Users\Frankie\Commander\config\freq.txt”,因为其他进程正在使用

我有以下代码:

if (!File.Exists(fileName))
{
    File.Create(fileName);
}
File.WriteAllText(fileName, contents);
但是,每次运行它时,都会出现IOException:

mscorlib.dll中发生类型为“System.IO.IOException”的未处理异常

其他信息:进程无法访问文件“C:\Users\Frankie\Commander\config\freq.txt”,因为其他进程正在使用该文件

如何使文件.WriteAllText()等待创建完成?

该方法为您创建文件,因此您只需要以下内容:

if (!File.Exists(fileName))
{
    File.WriteAllText(fileName, contents);
}
如果您不关心可能会覆盖文件,甚至可以忽略
文件.Exists
检查,因为
writealText
将覆盖现有文件


原始代码出现问题的原因是
File.Create
为该文件打开一个
FileStream
,并将其锁定;您必须先关闭它,然后才能对其进行写入。

创建文件后关闭它:

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

这可能是程序的另一个实例永远不会删除文件句柄的问题。尝试重新启动ide并重试。我已尝试重新启动Visual Studio和我的计算机。当我只是在没有附加IDE的情况下运行exe时,它也会这样做。如果这些答案仍然不适用于您,请尝试将文件复制到另一个文件并删除旧文件,然后重试。如果我手动关闭FileStream,它会允许我在没有问题的情况下写入它吗?