我有以下代码来读取和写入单行到文本文件。我们可以在处理结束时为读者和写者对象赋予null吗?或者我应该调用Close()方法?谢谢。关闭FileStream并将其设置为空有什么区别?
FileInfo JFile = new FileInfo(@"C:\test.txt");
using (FileStream JStream = JFile.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
{
StreamReader reader = null;
StreamWriter writer = null;
try
{
int n;
reader = new StreamReader(JStream);
string line = reader.ReadLine();
int.TryParse(line, out n);
n = n + 1;
writer = new StreamWriter(JStream);
JStream.Seek(0, SeekOrigin.Begin);
writer.WriteLine(n);
writer.Flush();
}
catch (Exception x)
{
string message = string.Format("Error while processing the file. {0}", x.Message);
System.Windows.Forms.MessageBox.Show(message);
}
reader = null;
writer = null;
}
感谢每一个人的伟大的解释。我使用相同的FileStream对象来创建StreamReader和StreamWriter。如果我在reader和writer对象上调用Close()方法,当它到达writer.Close()时,我会收到一条错误消息“无法访问已关闭的文件”。我猜,因为reader.Close()已经关闭了阅读器流和底层文件流。我无法为读写器创建不同的流,因为我必须锁定文件,直到完成写入文件。 – Jyina 2011-05-06 18:15:44
任何想法在这种情况下做什么?谢谢。 – Jyina 2011-05-06 18:18:54