我在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) {
}
现在我想要一个字符串,其中包含我文件中的确切行更改。
答案 0 :(得分:1)
FileSystemWatcher
API不提供旧版本的文件。
您需要在某处存储文件的最后一个状态,然后在下次更改时,您需要按照Text Difference Algorithm来获取这两个文件之间的差异。
答案 1 :(得分:1)
我想这不是直接可能的。您的程序会收到文件系统中事件更改文件的通知。文件系统不检查已更改的特定行。毕竟:更改的文件可能是二进制文件,图像,zip文件等。
你必须自己实现这样的逻辑。在某处创建文件的副本,然后在收到Change
事件时,将备份副本与actuall文件进行比较并计算更改。
或许你可以使用一些差异工具,比如git
内置的那个,但我不知道怎么做:)