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

  • Вопрос

  • Здравствуйте. Подскажите пожалуйста. Есть какая то клиент-программа наподобии компьютерной онлайн игры каким то образом добавляет логи в обычный текстовый файл(неизвестно как). Так вот мне нужно каким то образом вытаскивать из него только новые данные и некоторые из этих новых данных сохранять в свой лог-файл, т е те данные которых у меня еще нет в лог файле(т е это нужно делать раз в секунду гдето или еще как то так). Подскажите пожалуйста как такое можно сделать ? То есть как именно найти только новые данные а старые данные не трогать ?:(
    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