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

Вопрос
-
Здравствуйте. Подскажите пожалуйста. Есть какая то клиент-программа наподобии компьютерной онлайн игры каким то образом добавляет логи в обычный текстовый файл(неизвестно как). Так вот мне нужно каким то образом вытаскивать из него только новые данные и некоторые из этих новых данных сохранять в свой лог-файл, т е те данные которых у меня еще нет в лог файле(т е это нужно делать раз в секунду гдето или еще как то так). Подскажите пожалуйста как такое можно сделать ? То есть как именно найти только новые данные а старые данные не трогать ?:(29 июля 2011 г. 11:09
Ответы
-
Например:
private long position = 0; // храним позицию с какого байта читать файл private string fileName = "test.txt"; // файл public string ReadFile() { FileInfo fi = new FileInfo(fileName); using (Stream stream = File.Open(fileName, FileMode.Open)) { // читаем файл с предыдущей позиции stream.Seek(position, SeekOrigin.Begin); using (StreamReader sr = new StreamReader(stream)) { // запоминаем новый размер файла position = fi.Length; // читаем новые данные из файла return sr.ReadToEnd(); } } }
Для связи [mail]- Предложено в качестве ответа Abolmasov Dmitry 1 августа 2011 г. 11:13
- Помечено в качестве ответа Abolmasov Dmitry 1 августа 2011 г. 20:28
1 августа 2011 г. 6:48
Все ответы
-
При первом обращении к файлу запоминайте его размер в какой-нибудь переменной. Далее при послудущих обращениях читайте байты с позиции равной значению переменной до конца. Увеличивайте значение переменной на кол-во прочитанный байт.
Для связи [mail]29 июля 2011 г. 12:42 -
Спасибо а можно какой нибудь простенький пример работы с побайтово с текстом?29 июля 2011 г. 17:59
-
Например:
private long position = 0; // храним позицию с какого байта читать файл private string fileName = "test.txt"; // файл public string ReadFile() { FileInfo fi = new FileInfo(fileName); using (Stream stream = File.Open(fileName, FileMode.Open)) { // читаем файл с предыдущей позиции stream.Seek(position, SeekOrigin.Begin); using (StreamReader sr = new StreamReader(stream)) { // запоминаем новый размер файла position = fi.Length; // читаем новые данные из файла return sr.ReadToEnd(); } } }
Для связи [mail]- Предложено в качестве ответа Abolmasov Dmitry 1 августа 2011 г. 11:13
- Помечено в качестве ответа Abolmasov Dmitry 1 августа 2011 г. 20:28
1 августа 2011 г. 6:48