在读取文件时,请避免更新上次访问的日期/时间

Ano*_*yne 4 windows ntfs lastaccesstime

我们正在构建一个基于Windows的应用程序,它以递归方式遍历目录结构,查找满足特定条件的文件,然后对它们进行一些处理.为了决定是否处理特定文件,我们必须打开该文件并阅读其中的一些内容.

这种方法原则上看起来很棒,但是一些测试早期版本应用程序的客户报告说它正在改变大量文件的最后访问时间(这并不奇怪,因为它实际上是访问文件).这对于这些客户来说是一个问题,因为他们根据上次访问的文件时间(例如,他们存档过去12个月内未访问过的文件)具有存档策略.由于我们的应用程序计划比存档"窗口"更频繁地运行,因此我们有效地阻止了这些文件的任何存档.

我们尝试添加一些代码来保存每个文件的最后访问时间,然后再读取它,之后再写回来(我知道这很糟糕),但这会导致另一个基于文件系统事务日志进行增量备份的客户出现问题.我们对文件上次访问时间的显式设置导致这些文件包含在每个增量备份中,即使它们实际上没有更改.

所以这就是问题:在Windows环境中有什么办法可以在没有最后访问时间的情况下读取文件吗?

提前致谢!

编辑:尽管"ntfs"标签,我们实际上不能依赖文件系统是NTFS.我们的许多客户通过网络运行我们的应用程序,因此它可能只是另一端的任何东西.

Luk*_*uke 5

文件表明,你可以做到这一点,虽然我从来没有尝试过自己.

要在访问文件后保留文件的现有上次访问时间,请在打开文件句柄后立即调用SetFileTime,并将此参数的FILETIME结构成员初始化为0xFFFFFFFF.