我有一种情况,我需要检查txt文件是否存在,如果不存在,则需要创建它。
此后,我需要在文件中填充一些文本。
这是我的代码的样子:
if (!File.Exists(_filePath))
{
File.Create(_filePath);
}
using (var streamWriter = File.AppendText(_filePath))
{
//Write to file
}
仅当必须创建一个新文件时,我才在第5行收到一个异常(System.IO.IOException
)。例外:
The process cannot access the file '**redacted file path**' because it is being used by another process.
我不想添加类似Thread.Sleep(1000);
之类的东西,因为这是一个糟糕的解决方案。
是否有办法找出文件何时再次可用,以便我可以对其进行写入?
答案 0 :(得分:5)
只需将StreamWriter与参数append = true
一起使用。如有需要,它将创建文件。
using (StreamWriter sw = new StreamWriter(_filePath, true, Encoding.Default))
{
sw.WriteLine("blablabla");
}
答案 1 :(得分:4)
您是如此接近,只需删除第一个if
,File.AppendText
就会为您解决问题,并在不存在的情况下创建文件。
using (var streamWriter = File.AppendText(_filePath))
{
//write to file
}
答案 2 :(得分:2)
FileCreate方法返回Filestream,应在使用StreamWriter之前将其关闭
if (!File.Exists(_filePath))
{
// close fileStream
File.Create(_filePath).Close();
}
using (var streamWriter = File.AppendText(_filePath))
{
//Write to file
}