Код такой:
using (FileStream fs = new FileStream(logPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader sr = new StreamReader(fs, encoding))
{
while (!sr.EndOfStream)
{
logsContent.Add(sr.ReadLine());
}
}
}
И исключение:
System.IO.IOException: Процесс не может получить доступ к файлу "C:\ProgramData\*******.log", так как этот файл используется другим процессом.
Прочесть я пытаюсь лог другой проги на dotnet, она скорее всего использует NLOG для его создания. При этом в Powershell Get-Content читает его нормально
FileShare.ReadWrite зачем?
Со StackOverflow, я пока слабо понимаю что это даёт
Убрал, ничего не изменилось
Проблема не в этом коде
А в чём? Я пытался исходники Powershell для Get-Content прочитать чтобы взять оттуда код, но моего скудного умишки не хватат чтобы понять))))
В процессе занявший этот файл
Не, я же выше написал, что например тот же posh get-content его спокойно читает
Значит ты сюда не всей код скинул
Почему не весь то? using открыл чтение, добавил построчно, всё
Ни у кого идей нет?
Что-то открывает файл на монопольный доступ. Если это "что-то" - не ваш софт, то не получится прочитать лог
Попробуй не через FileStream, а через File.Open
Спасибо, попробую сейчас
Да именно так, но ведь Get-Content спокойно читает содержимое, или я его просто могу открыть блокнотом
Там права на чтения, а не на запись
Как убрал? Покажи код.
using (FileStream fs = new FileStream(logPath, FileMode.Open, FileAccess.Read)) { using (StreamReader sr = new StreamReader(fs, encoding)) { while (!sr.EndOfStream) { logsContent.Add(sr.ReadLine()); } } }
Ок, вроде выглядит корректно.
Пипец, это оказался баг Net Framework 4,6,1, обновил проект до 4,8 и всё отличное читается
Обсуждают сегодня