2016-07-19 14 views
0

私はプログラムをC#で作成しました。プログラムはファイルを読み込み、ファイル内の何かが変更されると、メソッドOnFileChangedが開始されます。そして、それは動作します。 しかし、私は私のファイルにある正確な新しい行を取得したいと思います。だから私は多分新しい行が入っている文字列を持っている。ファイルには新しい行しか来ることができない。正確なファイル変更の取得C#

このことは動作しますが、私のFileSystemWatcherされています。今、私は私のファイルの正確なライン変更で多分文字列を持ちたい

public static void OnFileChanged(object source, FileSystemEventArgs e) { 

} 

FileSystemWatcher fileWatcher = new FileSystemWatcher(); 
    fileWatcher.Path = Path.GetDirectoryName(filePath); 
    fileWatcher.Filter = Path.GetFileName(filePath.Split(backslashSeperator).Last()); 
    fileWatcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName; 
    fileWatcher.Changed += new FileSystemEventHandler(OnFileChanged); 
    fileWatcher.EnableRaisingEvents = true; 

と、これは私のOnFileChanged方法です。

答えて

1

FileSystemWatcher APIは、古いバージョンのファイルを提供しません。

ファイルの最後の状態をどこかに保存し、次に変更するときは、Text Difference Algorithmに従って2つのセットの違いを取得する必要があります。

1

これは直接可能ではないと思います。イベントによってファイルシステムから変更されたファイルがプログラムに通知されます。ファイルシステムは、変更された特定の行をチェックしません。結局のところ、変更されたファイルはバイナリファイル、イメージ、zipファイルなどである可能性があります。

あなたはこのようなロジックを自分で実装する必要があります。ファイルのコピーをどこかに作成し、Changeイベントを受け取ったら、バックアップコピーを実際のファイルと比較して変更を計算します。

または多分あなたはgitに建てられたもののように、いくつかの差分ツールを使用しますが、私はあなたが欲しい

0

は、FileSystemWatcherでは不可能である:)ことを行う方法は考えています。それでも、ファイルシステムのフィルタドライバでは、すべてのファイル書き込み要求を取得し、実際に実行される前に操作について通知することは可能です。

関連する問題