Reading Newly added line from textfile

Hi all


I am using a windows service that monitor a log files directory (using filesyswatcher) in c#.


In this LogFile Directory Some of the textfile appended new datas line by line.

How i read the only new appended datas from these textfiles


Please give me a solution.



Thanks
Anup


Answer this question

Reading Newly added line from textfile

  • twistedinferno

    Haven't tested it, but this should work...

    FileStream file = new FileStream( "logfile.txt", FileMode.Open, FileAccess.Read)
    file.Seek( previousEndPosition)
    TextReader reader = new StreamReader( file);
    while( (line = reader.ReadLine) != null)
    {
       ...
    }
    previousEndPosition = file.Position;


  • mhammingh

    Here is some old code of me that I once used to read lines from a logfile:




    System.IO.FileSystemWatcher k_Watcher;

      long k_Position = 0;
      System.IO.FileStream k_File_Stream;
      System.IO.StreamReader k_Stream_Reader;

      private void k_Watcher_Start()
      {
       if (k_Watcher.EnableRaisingEvents == false)
       {
        k_File_Stream = new System.IO.FileStream(@"F:\Program Files\Ryzom\save\log_kaetemi.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read);
        k_Stream_Reader = new System.IO.StreamReader(k_File_Stream);
        k_Position = k_File_Stream.Length;
        k_Stream_Reader.Close();
        k_File_Stream.Close();
        k_Watcher.EnableRaisingEvents = true;
       }
      }

      private void k_Watcher_End()
      {
       k_Watcher.EnableRaisingEvents = false;
      }

      private void k_Watcher_Changed(object sender, System.IO.FileSystemEventArgs e)
      {
       try
       {
        k_File_Stream = new System.IO.FileStream(e.FullPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        k_Stream_Reader = new System.IO.StreamReader(k_File_Stream);
        if (k_Position < k_File_Stream.Length)
        {
         k_File_Stream.Position = k_Position;
         k_Watcher_NewData(k_Stream_Reader.ReadToEnd());
         k_Position = k_File_Stream.Position;
        }
        else
        {
         k_Position = k_File_Stream.Length;
        }
        k_Stream_Reader.Close();
        k_File_Stream.Close();
       }
       catch
       {
        k_InfoData.Text = "BUG AT: k_Watcher_Changed";
       }
      }

      private void k_Watcher_NewData(string k_Data)
      {

      }

     



  • Reading Newly added line from textfile