我编写了一个工具来收集工具用户指定的时间窗口内的日志文件。到目前为止,我是通过在日志文件上使用 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 ,对您的情况也很有用。

我对此的一般意见是:不要依赖该参数,而是在您的架构中发明其他东西。

祝你好运

10-06 01:26