令人印象深刻的缺乏使用Refresh的例子。
我使用的是以下方法,它得到的时间不准确
ViewBag.t1 = System.IO.File.GetLastAccessTime(@"C:\BillingExport\BILLING_TABLE_FILE01_1.txt");我读到它是不准确的,因为操作系统还没有执行检查,并且更新了文件的读/写时间。
我试过了
System.IO.FileSystemInfo.Refresh(@"C:\BillingExport\BILLING_TABLE_FILE01_1.txt");但这是行不通的,我无法找到一个资源,并给出了类似的使用示例。
发布于 2014-08-20 21:55:39
FileSystemInfo是FileInfo和DirectoryInfo的抽象基类。它缓存文件/目录的属性。如果您保持(比方说)一个FileInfo对象并继续测试它的存在属性,那么调用Refresh()就变得非常重要。
这与File.GetLastAccessTime()无关。这些类是完全无关的,File类不缓存,并且总是从文件系统中检索最后的访问时间。
如果文件被任何程序打开,这是不可靠的。当程序正在主动访问文件时,文件系统并不急于更新这些属性。这太贵了,把磁盘驱动器写头发送到存储这些值的MFT扇区很容易花费数十毫秒的时间。一个程序可以更快地访问一个文件。记录在这篇MSDN文章中
不是所有的文件系统都能记录创建和上次访问时间,也不是所有的文件系统都以相同的方式记录它们。例如,FAT上创建时间的分辨率为10毫秒,而写入时间的分辨率为2秒,访问时间的分辨率为1天,因此它实际上是访问日期。NTFS文件系统在最后一次访问后将文件的最后访问时间延迟1小时。
最相关的短语用粗体表示,你所看到的几乎是意料之中的。你需要寻找一种不同的方法。
https://stackoverflow.com/questions/25414564
复制相似问题