下面的代碼在while循環中寫入文本文件,有時它會產生一個錯誤,指出「進程無法訪問該文件,因爲它正在被另一個進程使用」等等。「 錯誤通常發生在「使用(的FileStream FS = File.OpenRead(文件路徑))」 有不再被使用的方式來檢查文件還是有辦法妥善處理文本編寫的?什麼會導致此代碼產生文件鎖定錯誤?
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? – 2010-08-14 21:37:50
恕我直言,我會簡化代碼以使用文件(AppendAllText,ReadAllText,WriteAllText)的各種靜態方法 - 這比記住使用TextWriter實例更簡單,例如:) – 2010-08-14 21:48:55
使用Windows 7並在其上進行測試一臺Windows XP Pro機器,它也產生了相同的結果。 明天某個時候會嘗試James Manning的建議,看看能否更好的工作 – Mike 2010-08-16 07:56:46