c# - 如何检查文件自上次读取以来是否已更改? (C#)

标签 c# winapi filesystems

我有一个文本文件,同一应用程序的多个实例使用该文件在它们之间同步和交换数据。简而言之,它是一个包含数据文件列表的纯文本文件。这些数据文件定期来来去去。

有没有一种可靠的方法可以知道自上次读取文件后某个应用程序写入了该文件?通常你会为它使用修改日期。然而,文件访问如此频繁,以至于它可能会一直存在于内存缓存中。因此,很有可能写入文件不会改变修改日期。

有没有其他方法可以知道该文件已更改。

我知道文件系统通知,但不想在这里使用它们。

该软件是用 C# 编写的,但显然我也可以通过 InteropServices 使用任何 WinAPI 函数。软件在 Windows Server 2008 R2 上运行。文件系统为 NTFS。理想情况下,该方法也适用于网络共享。

最佳答案

ntfs 的一个有趣但(AFAI)很少使用的功能是它的 USN Journal,您可以阅读它。它维护文件系统所有更改的列表。我知道的唯一明确使用它的程序是 Everything。但可能是 FileSystemWatcher 在内部使用它。手动阅读此日志的一大优势是您可以找出程序未运行时发生的更改。

关于c# - 如何检查文件自上次读取以来是否已更改? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273316/

相关文章:

c# - 如何检测和纠正无用的 try catch block ?

c# - 使用 Async/Await 时的 WPF ProgressBar 使用情况

winapi - 错误 LNK2001 : unresolved external symbol _CLSID_XYS

删除旧 SVN 文件的 Python 脚本缺少权限

winapi - 路径前面的 "\\?\"是什么意思?

c# - 有没有办法使用 IoC 容器向辅助类注入(inject)依赖项?

c# - 使用 javascript 从代码隐藏获取 DataTable 值到客户端

c++ - Visual C++ 自动将 A 或 W 附加到函数末尾

c++ - 如何使用 Win32 API 对单选框按钮进行分组

cocoa - 如何测试应用程序是否正确处理慢速/不稳定的文件系统?