170 похожих чатов

Всем привет, а почему я не могу прочесть текстовый лог?

Код такой:
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 читает его нормально

19 ответов

23 просмотра

FileShare.ReadWrite зачем?

Павел-Львов Автор вопроса
Andrey Filippov
FileShare.ReadWrite зачем?

Со StackOverflow, я пока слабо понимаю что это даёт

Павел-Львов Автор вопроса
Andrey Filippov
FileShare.ReadWrite зачем?

Убрал, ничего не изменилось

Павел-Львов Автор вопроса
Mr. N
Проблема не в этом коде

А в чём? Я пытался исходники Powershell для Get-Content прочитать чтобы взять оттуда код, но моего скудного умишки не хватат чтобы понять))))

Павел-Львов Автор вопроса
Mr. N
В процессе занявший этот файл

Не, я же выше написал, что например тот же posh get-content его спокойно читает

Павел-Львов Автор вопроса
Mr. N
Значит ты сюда не всей код скинул

Почему не весь то? using открыл чтение, добавил построчно, всё

Павел-Львов Автор вопроса

Ни у кого идей нет?

Павел Львов
Ни у кого идей нет?

Что-то открывает файл на монопольный доступ. Если это "что-то" - не ваш софт, то не получится прочитать лог

Павел Львов
Ни у кого идей нет?

Попробуй не через FileStream, а через File.Open

Павел-Львов Автор вопроса
Павел-Львов Автор вопроса
SomebodyOdd
Что-то открывает файл на монопольный доступ. Если ...

Да именно так, но ведь Get-Content спокойно читает содержимое, или я его просто могу открыть блокнотом

Павел-Львов Автор вопроса
Dr. Friedrich von Never
Как убрал? Покажи код.

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 и всё отличное читается

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта