什么会导致此代码产生文件锁定错误?

Mik*_*ike 3 .net c# file

下面的代码写入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();
                    }
Run Code Online (Sandbox Code Playgroud)

小智 5

我一直用:

using (StreamReader reader = new StreamReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
}
Run Code Online (Sandbox Code Playgroud)

根据MSDN,File.OpenRead与以下内容相同:

new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
Run Code Online (Sandbox Code Playgroud)

(不同的是ReadShare与ReadWrite的FileShare)