2014-01-29 2 views
2

서버 데이터에서 매번 업데이트되는 텍스트 파일이 있습니다. 내 요구 사항에 따라이 파일을 한 줄씩 계속 읽어야합니다. 파일 줄을 읽는 방법을 알고 있습니다. 선으로하지만 ... continuously.Here 라인에 의해 파일의 라인을 읽어 내 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 
       } 
       } 
     } 

을받지 난 changes.Suppose 새로운 연속 텍스트 파일을 볼 수 있습니다 라인이 텍스트 파일에 추가 된 경우 추가 된 순간이 위에 정의 된 코드로 읽혀지고 조건에 따라 처리가 수행되어야합니다.

+0

참고로 UNIX 유틸리티 ['tail -f'] (http://stackoverflow.com/questions/1439799/how-can-i-get-the-source-code-for-the- linux-utility-tail)이이를 구현합니다. 그들은 파일을 "추적"이라고 부릅니다. –

+0

[C# 지속적으로 파일을 읽을 수]의 중복 가능 (http://stackoverflow.com/questions/3791103/c-sharp-continuously-read-file) –

답변

5

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; 
} 
+0

광산에서이 코드를 추가 할 위치는 텍스트 파일을 읽는 코드를 게시했습니다. – Adi

+0

변경 이벤트에서 파일을 읽어야합니다. 파일을 바꿀 때마다 이벤트가 발생합니다. 나는 이벤트 바인딩과 코드 읽기를위한 코드를 주었고, 읽기 라인을 줄 필요가있다. 줄을 서서 건너 뛰고 읽어 들일 필요가있다. – Adil

+0

ReadLinesCount 및 NewLinesCount에서 파일을 읽는 방법 – Adi