我需要定期检查存储库中的所有文件,并比较其LastAccessTime,以了解该文件上次使用(访问、修改和/或更新(的时间。
我已经尝试过使用File.GetLastAccessTime((和FileInfo.LastAccessTime,但打开/关闭它或读取它后,我总是得到相同的DateTime。
我怎么知道文件何时被使用?
谢谢!
string path = System.Environment.CurrentDirectory + "/testing/doc2.txt"
Console.WriteLine("--------------------------------------");
Console.WriteLine("GetLastAccessTime {0}", File.GetLastAccessTime(path));
Console.WriteLine("GetLastAccessTimeUtc {0}", File.GetLastAccessTimeUtc(path));
Console.WriteLine("Directory.GetLastAccessTime {0}", Directory.GetLastAccessTime(path));
FileInfo fi = new FileInfo(path);
Console.WriteLine("fi.LastAccessTime {0}", fi.LastAccessTime);
输出:
GetLastAccessTime 12/18/2018 11:41:15 AM
GetLastAccessTimeUtc 12/18/2018 4:41:15 PM
Directory.GetLastAccessTime 12/18/2018 11:41:15 AM
fi.LastAccessTime 12/18/2018 11:41:15 AM
--------------------------------------
GetLastAccessTime 12/18/2018 11:41:15 AM
GetLastAccessTimeUtc 12/18/2018 4:41:15 PM
Directory.GetLastAccessTime 12/18/2018 11:41:15 AM
fi.LastAccessTime 12/18/2018 11:41:15 AM
最重要的是,您使用的是什么文件系统。我想是NTFS。然后有一些报价:
文件的上次访问时间戳是打开该文件进行读取或写入的最后日期和时间。因此,每次用户访问文件时,都需要更新此时间戳,这有点开销,尤其是如果您不太喜欢此文件属性的话为了提高Windows 10(以及从Windows Vista开始的早期版本(中NTFS文件系统的性能,不会更新文件和目录的上次访问时间
来源于此处
奖励聊天:从Windows Vista开始,默认情况下会禁用维护上次访问时间。在实践中,这意味着与意外更改上次访问时间相关的错误数量将在未经检查的情况下成倍增加,因为检测错误的机制在默认情况下是禁用的。
来源于此处
还有一个环节,似乎还有另一种行为。
以及FAT的最后一个链接。我不太确定,因为我上一次只读FAT12(软盘驱动器/软盘(描述是在很久以前,但FAT文件系统中可能没有空间存储上次访问时间,只存储日期。对于Microsoft提供的带有长文件名的扩展名,我无法对此进行确认。