如何防止我的C#应用​​程序两次打开同一个文件

时间:2010-08-09 20:48:08

标签: c# .net file

我需要知道C#打开的文本文件何时不再使用 - 我的应用程序将文本写入txt文件,有时在尝试再次写入时仍然会锁定它。 毫无疑问,另一个进程或单词可能会在释放后锁定锁定。 有没有办法确定文件是否仍然被锁定,如果未锁定,则重新尝试写入?

2 个答案:

答案 0 :(得分:3)

以下是使用using块读取文件的示例,该块将为您关闭文件:

using (FileStream fs = File.OpenRead(@"c:\path\filename.txt")) //Open the file here
{
    using (StreamReader sr = new StreamReader(fs))
    {
        while (!sr.EndOfStream)
        {
            Console.WriteLine(sr.ReadLine());
        }
    }
} //File will close when scope of this brace ends.

当有连续的​​using块时,有些人更喜欢省略大括号的外层。为了清楚起见,我已将它们包含请注意,using块会在封面下使用try-finally块,以确保即使存在未捕获的异常,您的文件也会关闭。这是一件好事。

另见RAII

答案 1 :(得分:2)

您可能没有正确处理该文件。如果您丢弃该文件,您将能够立即再次写入该文件,而不必等待该文件可用。