首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用System.IO.FileSystemInfo.Refresh

如何使用System.IO.FileSystemInfo.Refresh
EN

Stack Overflow用户
提问于 2014-08-20 21:16:08
回答 1查看 4.4K关注 0票数 1

令人印象深刻的缺乏使用Refresh的例子。

我使用的是以下方法,它得到的时间不准确

代码语言:javascript
复制
 ViewBag.t1 = System.IO.File.GetLastAccessTime(@"C:\BillingExport\BILLING_TABLE_FILE01_1.txt");

我读到它是不准确的,因为操作系统还没有执行检查,并且更新了文件的读/写时间。

我试过了

代码语言:javascript
复制
 System.IO.FileSystemInfo.Refresh(@"C:\BillingExport\BILLING_TABLE_FILE01_1.txt");

但这是行不通的,我无法找到一个资源,并给出了类似的使用示例。

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 21:55:39

FileSystemInfo是FileInfo和DirectoryInfo的抽象基类。它缓存文件/目录的属性。如果您保持(比方说)一个FileInfo对象并继续测试它的存在属性,那么调用Refresh()就变得非常重要。

这与File.GetLastAccessTime()无关。这些类是完全无关的,File类不缓存,并且总是从文件系统中检索最后的访问时间。

如果文件被任何程序打开,这是不可靠的。当程序正在主动访问文件时,文件系统并不急于更新这些属性。这太贵了,把磁盘驱动器写头发送到存储这些值的MFT扇区很容易花费数十毫秒的时间。一个程序可以更快地访问一个文件。记录在这篇MSDN文章

不是所有的文件系统都能记录创建和上次访问时间,也不是所有的文件系统都以相同的方式记录它们。例如,FAT上创建时间的分辨率为10毫秒,而写入时间的分辨率为2秒,访问时间的分辨率为1天,因此它实际上是访问日期。NTFS文件系统在最后一次访问后将文件的最后访问时间延迟1小时。

最相关的短语用粗体表示,你所看到的几乎是意料之中的。你需要寻找一种不同的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25414564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档