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");
}
你太接近了,只需删除第一个 if
,File.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
}
我有一个场景需要检查 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");
}
你太接近了,只需删除第一个 if
,File.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
}