强制关闭文件

时间:2013-11-15 04:41:23

标签: c#

我正在阅读,然后写入文本文件。我在我的程序的多个部分中执行此操作。写完之后,我总是关闭它(我使用streamreader / writer)。在关闭和下一次打开之间通常有大约3秒钟。

但是,第二次我需要写入同一个文件时,我总是会收到拒绝访问错误,因为另一个进程正在使用它。在任何其他进程中都没有使用它,重新启动我的程序让我可以从中读取它。

这是打开/写入/关闭代码:

System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text);
file.WriteLine(account);
file.Close();

3 个答案:

答案 0 :(得分:7)

假设没有多线程,则问题在于妥善处置。处理流的正确方法或实现IDisposable的一般类型是将它们包装在using语句中。 using语句确保正确处理并使用finally块来确保即使在特殊情况下流也关闭。

using(var file = new System.IO.StreamWriter(saveFileLocation.Text))
{
  //do work...
  file.WriteLine(account);
}//when file goes out of scope it will close

为你的所有流做这件事。

答案 1 :(得分:2)

使用using语句或try{ }finally{ file.Close(); }

答案 2 :(得分:1)

你确定没有抛出异常,阻止被调用吗?无论哪种方式,这都是更好的代码:

using (System.IO.StreamWriter file = new System.IO.StreamWriter(saveFileLocation.Text))
{
    file.WriteLine(account);
}