如何获取文件的最后修改日期?

how to get file last modified date?

我有一个错误。为什么我不知道我要获取此文件的最后修改日期。但我有问题

在我的代码中:日期总是 01011601 为什么?你有什么建议吗?

文件属性:

来自 msdn

If the file described in the path parameter does not exist, this method returns 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC), adjusted to local time.

https://msdn.microsoft.com/en-US/library/system.io.file.getlastwritetime(v=vs.110).aspx

我猜你的文件没有找到。尝试指定文件的完整路径

写入时尝试访问文件是否确实存在?

documentation有以下备注:

If the file described in the path parameter does not exist, this method returns 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC), adjusted to local time.

如果您从 (pthh) 获取文件的路径不是您的应用 运行 所在的目录,我希望是这个日期。
当您调用 File.GetLastWriteTime(sqzfiles[i]) 时,您现在只依赖文件名,因此使用了相对路径。该文件很可能不在您应用程序的目录中(尽管它 pthh 中)。

由于相对路径下的文件不存在,所以documentation会说明你的意外日期:

If the file described in the path parameter does not exist, this method returns 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC), adjusted to local time.

如果文件被另一个应用程序锁定,我也看到过这种情况,这是值得的。

在这种情况下,您的路径似乎无效。请参阅 MSDN 文档:

您可以通过创建一个小型测试应用程序(即 sandbox)来确定问题的根源,以验证您的代码是否按预期工作。为尽量减少潜在错误,请使测试尽可能简单(例如使用硬编码文件路径)。

补充说明

  • 根据经验,我知道 GetLastWriteTime(...) 方法并不总是按预期工作。在某些情况下,即使文件已 modified/changed,该方法也不会 return 更新时间戳。此场景与以下内容相关:
    • 已应用于文件的锁定类型
    • 正在使用的 Windows 磁盘驱动程序