下面的代码写入while循环中的文本文件,有时它会产生一个错误,说"进程无法访问该文件,因为它被另一个进程使用"等等......"错误通常发生在"使用( FileStream fs = File.OpenRead(filePath))"有没有办法检查文件是否已被使用或是否正确处理文本编写器?
if (File.Exists(filePath))
{
TextWriter sud = File.AppendText(filePath);
sud.WriteLine(GenericLIST[testloop].ToString());
sud.Close();
sud.Dispose();
using (FileStream fs = File.OpenRead(filePath))
{
using (StreamReader sr = new StreamReader(fs))
{
while (!sr.EndOfStream)
{
richTextBox1.AppendText(sr.ReadLine());
}
}
}
}
else
{
TextWriter sud = new StreamWriter(filePath);
sud.WriteLine(GenericLIST[testloop].ToString());
sud.Close();
sud.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我一直用:
using (StreamReader reader = new StreamReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN,File.OpenRead与以下内容相同:
new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
Run Code Online (Sandbox Code Playgroud)
(不同的是ReadShare与ReadWrite的FileShare)