【发布时间】:2010-08-14 21:11:27
【问题描述】:
下面的代码在一个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();
}
【问题讨论】:
-
您运行的是什么版本的 Windows?
-
恕我直言,我会简化代码以使用 File 的各种静态方法(AppendAllText、ReadAllText、WriteAllText)——这比记住使用 TextWriter 实例更简单,例如 :)
-
使用 Windows 7 并在 Windows XP Pro 机器上进行了测试,并产生了相同的结果。明天某个时候会试试 James Manning 的建议,看看效果是否更好