C# 创建文件后无法立即访问文件

C# cannot access file immediately after creating it

我有一个场景需要检查 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); 的内容,因为那是一个糟糕的解决方案。

有没有办法找出文件何时再次空闲,以便我可以写入?

只需使用带有参数 append = true 的 StreamWriter。如果需要,它会创建文件。

using (StreamWriter sw = new StreamWriter(_filePath, true, Encoding.Default))
{
   sw.WriteLine("blablabla");
}

你太接近了,只需删除第一个 ifFile.AppendText 将为你解决问题,如果不存在则创建文件。

using (var streamWriter = File.AppendText(_filePath))
{
    //write to file
}

FileCreate 方法return 在使用 StreamWriter 之前应该关闭的文件流

if (!File.Exists(_filePath))
{
// close fileStream
    File.Create(_filePath).Close();
}

using (var streamWriter = File.AppendText(_filePath))
{
    //Write to file
}