获取确切的文件更改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) {
}
现在我想在我的文件中有一个确切的行更改字符串。
FileSystemWatcher
API不提供旧版本的文件。
您需要将文件的最后一个状态存储在某个位置,然后下次它更改时,您需要遵循文本差异算法来获得两个集合之间的差异。
我想这是不可能的。您的程序会收到文件系统中事件更改文件的通知。文件系统不检查已更改的特定行。毕竟:更改后的文件可以是二进制文件、图像、zip文件等。
你必须自己实现这样的逻辑。在某个位置创建文件的副本,然后在收到Change
事件时,将备份副本与实际文件进行比较,并计算更改。
或者你可以使用一些diff工具,比如git
中内置的工具,但我不知道如何做到这一点:)