可能重复:
File being used by another process after using File.Create()
我有一个将文本附加到文件的方法。在我附加文本之前,我检查文件是否存在。如果它不存在我创建它然后继续如下所示。
if(!File.Exists(_someFile))
File.Create(_someFile);
using (StreamWriter file = File.AppendText(_someFile))
{
file.WriteLine("some text");
}
如果文件存在则没有问题。该文件将被更新。如果该文件不存在并且它被创建,则在使用'using'的行上抛出IO异常,表明另一个进程正在使用该文件。我尝试使用进程资源管理器来找出使用该文件的内容,结果是“不存在的进程”。 有谁知道发生了什么以及如何解决这个问题?
编辑:问题解决了
我第一次搜索时在这个网站上找不到关于我的问题的问题。我一发布问题,就在右边的“相关问题”中看到了确切的问题。 链接到解决方案:File being used by another process after using File.Create() 很抱歉发布了重复内容。 我的问题解决了。
答案 0 :(得分:6)
这是因为File.Create(_someFile);
打开了必须先关闭的文件流,然后才能使用新创建的文件。
试试这个:
if(!File.Exists(_someFile))
{
using (var stream = File.Create(_someFile))
}
using (StreamWriter file = File.AppendText(_someFile))
{
file.WriteLine("some text");
}
但实际上您不需要先检查并创建文件。如果文件不存在,StreamWriter将创建该文件,如果该文件存在,则将其附加到文件中。
using (StreamWriter sw = new StreamWriter(_someFile, true))
{
file.WriteLine("some text");
}
答案 1 :(得分:1)
string _someFile = @"C:\somefile.txt"; TextWriter tw = new StreamWriter(_someFile, true); // append == true tw.WriteLine("some text"); tw.Close();