【发布时间】:2018-04-30 16:11:31
【问题描述】:
在向我发送here、here 和here 的链接之前,请耐心等待。
我想编写一个服务来监视给定文件集的更改,我从最简单的事情开始编写监视目录的控制台应用程序,以便继续我的 POC。但是,我在试图提取所做的实际更改时遇到了困难。 (是的,我设法处理了 FileSystemWatcher 类中的事件,但就我看到该类的 API 而言,我无法跟踪实际的变化)
你知道有没有办法做到这一点?也许没有那么多痛苦或不必要的手术。
我目前使用的是 .NET Core 2.0,但任何版本的 .NET Core 都可以。
编辑:我需要监控的文件是基于文本的,基本上我想实现git diff 功能并报告更改。
【问题讨论】:
-
您在说什么对文件的“更改”?这是二进制文件还是纯文本?将“teh”更改为“the”与将二进制文件中间的 001010 更改为 110101 不同。好吧,在最低级别不是,但您应该详细说明。
-
好点,我只谈论基于文本的文件,所以任何更改都可以,稍后我可能想决定实施一种仅跟踪相关更改的方法,但这是我现在想要的另一个主题查看文件如何更改(就像 git diff 一样)
-
@zaitsman 请告诉我你没有读过这个问题,否则我会感到震惊。
-
虽然有很多其他人让它工作,但我很惊讶你甚至没有先找到一个工作样本,并且一直说“卡住”或“震惊”。即使是微软制作的测试用例也应该对理解 API 本身很有帮助,github.com/dotnet/corefx/tree/master/src/…
-
AFAIK,API 不支持此功能。大多数平台不跟踪文件中的实际更改;他们只是报告文件已更改并且他们知道新内容。例如,在 Linux 上,这是建立在
inotify之上的。这只会让你得到改变的文件(名称)。 .NET Core 无法提供与平台无关的方式来公开并非在所有平台上都存在的功能。要进行类似 git 的 diff,您可能必须使用某种版本控制系统。
标签: c# .net-core file-monitoring