Подтвердить что ты не робот

Как вы читаете файл, который используется?

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

Сначала попыталась создать копию файла, который тоже не работает.

Есть ли способ прочитать текущий текст файла журнала, даже если он уже используется?

4b9b3361

Ответ 1

using (FileStream stream = File.Open("path to file", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (StreamReader reader = new StreamReader(stream))
    {
        while (!reader.EndOfStream)
        {

        }
    }
}

FileAccess указывает, что вы хотите делать с файлом. FileShare указывает, что ДРУГИЕ могут делать с файлом, пока вы его используете.

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

Ответ 2

Используйте File.OpenRead(path), это позволяет вам обращаться к файлу readonly к файлу; таким образом вы не будете беспокоиться, если другое приложение имеет блокировку записи в файле.

Ответ 3

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

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

Ответ 4

Это зависит, пробовали ли вы читать файл только в режиме чтения? используя один из статических методов

 System.IO.File.ReadAllText(path) or  System.IO.File.ReadAllLines(path)

они могут работать, если файл не заблокирован исключительно

Ответ 5

Я очень рекомендую BareTail, который мы используем для просмотра всех наших журналов в реальном времени. Также поддерживает подсветку, что очень полезно.