gpt4 book ai didi

c# - 使用 .NET Core 2.0 在 Windows 上监视文件更改

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:14 25 4
gpt4 key购买 nike

在您向我发送指向 here 的链接之前, here也许here忍耐一下。

我想编写一个服务来监视给定文件集的更改,我从编写监视目录的控制台应用程序最简单的事情开始,以便继续我的 POC。但是,我在尝试提取所做的实际更改时遇到了困难。 (是的,我设法处理了 FileSystemWatcher 类中的事件,但据我所知,我无法跟踪类的 API,无法跟踪实际更改)

你知道有没有办法做到这一点?也许没有那么多痛苦或不必要的手术。

我目前使用的是 .NET Core 2.0,但任何版本的 .NET Core 都可以。

编辑:我需要监控的文件是基于文本的,基本上我想实现 git diff 功能并报告更改。

最佳答案

简短的回答是否定的,没有 API 会告诉您文件的哪一部分被修改了。除了从 FileSystemWatcher 获得的信息之外,您可以从操作系统获得的只是文件发生更改的通知,而不是更改的性质或位置。

要检测更改的性质,您需要能够比较更改前后的文件内容。在大多数情况下,您无权访问文件的先前状态。您可以使用卷影副本访问文件的先前状态,但这有其自身的问题。

如果您只监视少量文件,那么您可以进行某种指纹识别(例如 block 级散列)来检测更改的位置。您仍然需要前后对比来检测特定的变化。

也就是说……

原则上可以挂接到用于实际将数据写入磁盘的 Windows API。我没有在 .NET 上尝试过,但我用过 Detours过去做过类似的事情。请注意,API Hook 是一个危险的领域,如果你弄错了,你可能会毁掉你的计算机。这里是龙。如果您想走这条路,我强烈建议您在编写代码时着眼于最大限度地减少延迟。

关于c# - 使用 .NET Core 2.0 在 Windows 上监视文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47341232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com