我目前正在使用FileWatcher(FileSystemWatcher.OnChanged
)检测文件更改时 。我想知道是否有办法确定 文件如何更改。
例如,我有一个包含以下内容的.txt:Hello world!
。然后对其进行编辑和保存,使其显示为Hello world! Goodbye world!
。是否有一种更优雅的方式来获取文件中添加的文本(Goodbye world!
),而无需将原始文本保存为字符串变量,然后在检测到文件更改时将其与新文本进行比较?如果文本仅添加到文件中,此方法可以有效,但如果文本被删除或更改,即更改为Hello
或Hello friend!
,该怎么办?
答案 0 :(得分:3)
无法使用您请求的粒度检测更改类型。谁修改文件总是可以将整个文件读入一个字符串并添加和删除一些单词然后再写回字符串,使更改的语义(即append / prepend / insert / remove / ...)不透明操作系统。事实上,这就是99%的程序在文本文件上运行的方式。
差异工具(例如,在SCM中使用)可以帮助重建一组可能的更改。但是,是的,您需要保留原始文件的副本。