IOException创建文件然后尝试访问它时

Jos*_*lin 1 c# file-io

可能重复:
使用File.Create()后其他进程正在使用的文件

我有一个方法将文本附加到文件.在我附加文本之前,我检查文件是否存在.如果它不存在我创建它然后继续如下所示.

if(!File.Exists(_someFile))
    File.Create(_someFile);

using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)

如果文件存在则没有问题.该文件将被更新.如果该文件不存在并且它被创建,则在使用'using'的行上抛出IO异常,表明另一个进程正在使用该文件.我尝试使用进程资源管理器来找出使用该文件的内容,结果是"不存在的进程".有谁知道发生了什么以及如何解决这个问题?

编辑:问题解决了

我第一次搜索时在这个网站上找不到关于我的问题的问题.我一发布问题,就在右边的"相关问题"中看到了确切的问题.链接到解决方案:使用File.Create()后由另一个进程使用的文件 很抱歉发布了一个副本.我的问题解决了.

Vla*_*adL 6

发生这种情况是因为File.Create(_someFile);打开必须先关闭的文件流才能使用新创建的文件.试试这个:

if(!File.Exists(_someFile))
{
    using (var stream = File.Create(_someFile))
}
using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)

但实际上您不需要先检查并创建文件.如果文件不存在,StreamWriter将创建该文件,如果文件存在则将文本附加到文件中.

using (StreamWriter sw = new StreamWriter(_someFile, true))
{
    file.WriteLine("some text");
}
Run Code Online (Sandbox Code Playgroud)