Как читать текстовый файл непрерывно

У меня есть текстовый файл, который обновляется каждый раз из данных сервера. Теперь согласно моему требованию я должен читать этот файл построчно. Я знаю, как читать файл построчно, но не понимаю, как читать его непрерывно Вот мой код на C# для чтения файла построчно...

if (System.IO.File.Exists(FileToCopy) == true)
        {

            using (StreamReader reader = new StreamReader(FileToCopy))
            {
                string line;
                string rawcdr;

                while ((line = reader.ReadLine()) != null)
                {
                   //Do Processing
                }
              }
         }

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

1 ответ

Решение

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

private int ReadLinesCount = 0;
public static void RunWatcher()
{
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = "c:\folder";   
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;   
    watcher.Filter = "*.txt";    
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.EnableRaisingEvents = true;

}

private static void OnChanged(object source, FileSystemEventArgs e)
{
      int totalLines - File.ReadLines(path).Count();
      int newLinesCount = totalLines - ReadLinesCount;
      File.ReadLines(path).Skip(ReadLinesCount).Take(newLinesCount );
      ReadLinesCount = totalLines;
}
Другие вопросы по тегам