Как запретить моему приложению C # открывать один и тот же файл дважды - PullRequest
0 голосов
/ 10 августа 2010

Мне нужно знать, когда текстовый файл, открытый C #, больше не используется - мое приложение записывает текст в текстовый файл, и иногда оно все равно блокируется при попытке записи в него снова. Не беспокойтесь о том, что другой процесс или слово могут вернуть блокировку после того, как она будет освобождена. Есть ли способ определить, заблокирован ли файл, и повторить попытку записи, если он не заблокирован?

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Ниже приведен пример чтения файла с использованием блока 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 .

2 голосов
/ 10 августа 2010

Вы, вероятно, неправильно утилизируете файл. Если вы утилизируете файл, вы сможете сразу же написать в него снова, и вам не придется ждать, пока файл станет доступным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...