Процесс не может получить доступ к файлу, поскольку он используется другим процессом
Я пытаюсь прочитать файл журнала log4net:
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)
и я получаю исключение, указанное в теме. Я думаю, log4Net хранит исключительную блокировку файла, но, например, Notepad ++ может читать файл, я думаю, технически это возможно сделать.
Любая помощь?
Ответы
Ответ 1
using (FileStream fs =
new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
//...
http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx
Ваш журнал может быть заблокирован, поэтому попробуйте с FileShare.ReadWrite.
Ответ 2
Попробуйте добавить параметр FileShare, посмотрите, помогает ли это:
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
EDIT: исправленный код, а не FileShare.Read
, но FileShare.ReadWrite
делает трюк (как показал Гийом). Причина: вы хотите открыть файл и разрешить другим читать и писать в одно и то же время.