Обойти блокировку чтения файла, который занят другим процессом – Apadtive solutions

Обойти блокировку чтения файла, который занят другим процессом


Столкнулся со следующей проблемой – нужно читать лог-файл сторонней программы из своей из текстового файла, но так как в этот файл производится беспрерывная запись, следующий отрезок кода выдает исключение по проблеме с доступом.

string path = @"C:\logs\log.txt";
var szr = new StreamReader(path);
var pa = szr.ReadToEnd();

Код, указанный выше выдает следующее исключение:

System.IO.IOException: "The process cannot access the file 'C:\logs\log.txt' because it is being used by another process."

Решить данную проблему можно создав FileStream, из которого будет считываться нужный нам файл.

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs, Encoding.Default))
{
     var ss = sr.ReadToEnd();
}

В данном случае никакого исключения нет и мы получаем полное содержимое файла с помощью данного обхода.