我编写了一个工具来收集工具用户指定的时间窗口内的日志文件。到目前为止,我是通过在日志文件上使用 File.GetLastWriteTime 方法来收集日志文件的,并将其与用户输入的时间进行比较,并根据这些比较的结果进行收集。这是一个小代码片段:
DateTime logFileEnd = File.GetLastWriteTime(matchingActiveLogFile);
但是我注意到我的工具没有收集一些我认为应该完成的日志文件。此方法返回的 DateTime 似乎已过时,(文件中的日志记录比此日期时间的值要多)。
当我查看相关文件的“修改日期”时,它也“过时”,文件中的日志记录比“修改日期”要多。
如何获得准确的“GetLastWriteTime”或“修改日期”值?
最佳答案
在我的经历中,我抛出了一些像你这样的问题。在 Windows Vista/7 系统上,该功能并不总是返回可靠的结果。
过了一会儿,我们找到了这个链接:Disabling Last Access Time in Windows Vista to improve NTFS performance
基于此,很明显上次访问时间不能用作“强 key ”。为了解决这个问题,我们只是停止对 GetLastWriteTime
调用进行中继,而是存储文件的最后更改的值或其名称,如 "FileName_yyyymmdd"
,或在某个字段中的该文件中。GetLastAccessTime
的另一个解决方案可以在这里找到:
.NET FileInfo.LastWriteTime & FileInfo.LastAccessTime are wrong ,对您的情况也很有用。
我对此的一般意见是:不要依赖该参数,而是在您的架构中发明其他东西。
祝你好运