获取确切的文件更改C#

本文关键字:文件 获取 | 更新日期: 2023-09-27 17:57:39

我用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) {
}

现在我想在我的文件中有一个确切的行更改字符串。

获取确切的文件更改C#

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

您需要将文件的最后一个状态存储在某个位置,然后下次它更改时,您需要遵循文本差异算法来获得两个集合之间的差异。

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

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

或者你可以使用一些diff工具,比如git中内置的工具,但我不知道如何做到这一点:)