C# 创建文件并尝试访问时发生IOException

C# 创建文件并尝试访问时发生IOException,c#,file-io,C#,File Io,可能重复: 我有一个将文本附加到文件的方法。在附加文本之前,我检查文件是否存在。如果它不存在,我创建它,然后按如下所示进行操作 if(!File.Exists(_someFile)) File.Create(_someFile); using (StreamWriter file = File.AppendText(_someFile)) { file.WriteLine("some text"); } 如果文件存在,则没有问题。该文件将被更新。如果文件

可能重复:

我有一个将文本附加到文件的方法。在附加文本之前,我检查文件是否存在。如果它不存在,我创建它,然后按如下所示进行操作

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

using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
如果文件存在,则没有问题。该文件将被更新。如果文件不存在,并且创建了该文件,则会在带有“using”的行上抛出一个IO异常,说明另一个进程正在使用该文件。我尝试使用process explorer找出文件的用途,结果是进程不存在。 有人知道发生了什么事以及如何解决这个问题吗

编辑:问题解决了

当我第一次搜索时,我在这个网站上找不到关于我的问题的问题。当我发布我的问题时,我在右边的“相关问题”中看到了确切的问题。 链接到解决方案: 对不起,我发了一份副本。 我的问题解决了。

这是因为File.Create\u someFile;打开必须关闭的文件流,然后才能使用新创建的文件。 试试这个:

if(!File.Exists(_someFile))
{
    using (var stream = File.Create(_someFile))
}
using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
但实际上,您不需要先检查并创建文件。如果文件不存在,将创建该文件;如果文件存在,则将文本附加到该文件

using (StreamWriter sw = new StreamWriter(_someFile, true))
{
    file.WriteLine("some text");
}
这是因为File.Create\u someFile;打开必须关闭的文件流,然后才能使用新创建的文件。 试试这个:

if(!File.Exists(_someFile))
{
    using (var stream = File.Create(_someFile))
}
using (StreamWriter file = File.AppendText(_someFile))
{          
    file.WriteLine("some text");
}
但实际上,您不需要先检查并创建文件。如果文件不存在,将创建该文件;如果文件存在,则将文本附加到该文件

using (StreamWriter sw = new StreamWriter(_someFile, true))
{
    file.WriteLine("some text");
}

弗拉德的回答是正确的。由于您希望在文件不存在时创建该文件,并在文件存在时追加该文件,因此下面是一个简单的解决方案:


弗拉德的回答是正确的。由于您希望在文件不存在时创建该文件,并在文件存在时追加该文件,因此下面是一个简单的解决方案: