我有一个文本文件,同一应用程序的多个实例使用该文件在它们之间同步和交换数据。简而言之,它是一个包含数据文件列表的纯文本文件。这些数据文件定期来来去去。
有没有一种可靠的方法可以知道自上次读取文件后某个应用程序写入了该文件?通常你会为它使用修改日期。然而,文件访问如此频繁,以至于它可能会一直存在于内存缓存中。因此,很有可能写入文件不会改变修改日期。
有没有其他方法可以知道该文件已更改。
我知道文件系统通知,但不想在这里使用它们。
该软件是用 C# 编写的,但显然我也可以通过 InteropServices 使用任何 WinAPI 函数。软件在 Windows Server 2008 R2 上运行。文件系统为 NTFS。理想情况下,该方法也适用于网络共享。
最佳答案
ntfs 的一个有趣但(AFAI)很少使用的功能是它的 USN Journal,您可以阅读它。它维护文件系统所有更改的列表。我知道的唯一明确使用它的程序是 Everything。但可能是 FileSystemWatcher 在内部使用它。手动阅读此日志的一大优势是您可以找出程序未运行时发生的更改。
关于c# - 如何检查文件自上次读取以来是否已更改? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273316/