我们正在构建一个基于 Windows 的应用程序,它递归地遍历目录结构,寻找满足特定条件的文件,然后对它们进行一些处理。为了决定是否处理特定文件,我们必须打开该文件并读取其中的一些内容。
这种方法原则上看起来不错,但一些测试该应用程序早期版本的客户报告说,它正在更改大量文件的最后访问时间(不足为奇,因为它实际上正在访问文件)。这对这些客户来说是个问题,因为他们有基于文件最后访问时间的归档策略(例如,他们归档过去 12 个月内未访问的文件)。因为我们的应用程序比归档“窗口”更频繁地运行,所以我们有效地防止了这些文件中的任何一个被归档。
我们尝试在读取每个文件之前添加一些代码来保存每个文件的最后访问时间,然后再将其写回(我知道这很可怕),但这给另一个基于文件系统事务日志进行增量备份的客户带来了问题。我们对文件的最后访问时间的显式设置导致这些文件包含在每个增量备份中,即使它们实际上并没有改变。
那么问题来了:在 Windows 环境中,有什么方法可以让我们在不更新上次访问时间的情况下读取文件?
提前致谢!
编辑:尽管有“ntfs”标签,但我们实际上不能依赖文件系统是 NTFS。我们的许多客户通过网络运行我们的应用程序,所以它可以是另一端的任何东西。