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");
}
弗拉德的回答是正确的。由于您希望在文件不存在时创建该文件,并在文件存在时追加该文件,因此下面是一个简单的解决方案:
弗拉德的回答是正确的。由于您希望在文件不存在时创建该文件,并在文件存在时追加该文件,因此下面是一个简单的解决方案: