我有以下代碼來讀取和寫入單行到文本文件。我們可以在處理結束時爲讀者和寫者對象賦予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