获得精确的文件更改C#

时间:2016-07-19 06:39:16

标签: c# filesystemwatcher

我在c#中编写了一个程序,程序正在读取文件,当文件中的某些内容发生变化时,OnFileChanged方法就会启动。这很有效。 但是现在我想获得确切的新行,这些行在我的文件中。所以我可能有一个新行所在的字符串。在文件中只能出现新行。

这是我的FileSystemWatcher,有效:

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方法:

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

}

现在我想要一个字符串,其中包含我文件中的确切行更改。

2 个答案:

答案 0 :(得分:1)

FileSystemWatcher API不提供旧版本的文件。

您需要在某处存储文件的最后一个状态,然后在下次更改时,您需要按照Text Difference Algorithm来获取这两个文件之间的差异。

答案 1 :(得分:1)

我想这不是直接可能的。您的程序会收到文件系统中事件更改文件的通知。文件系统不检查已更改的特定行。毕竟:更改的文件可能是二进制文件,图像,zip文件等。

你必须自己实现这样的逻辑。在某处创建文件的副本,然后在收到Change事件时,将备份副本与actuall文件进行比较并计算更改。

或许你可以使用一些差异工具,比如git内置的那个,但我不知道怎么做:)