获取目录中文件的属性时最小化磁盘访问

时间:2009-12-21 18:00:22

标签: file directory disk-access

正如标题所示,我正在寻找一种方法来获取目录中大量文件的属性,但不会为每个文件增加额外磁盘访问的成本。

例如,如果我在集合中获取FileInfo对象的Name属性,则没有其他磁盘访问权限。但是,如果我获得LastWriteTimeUtc,则会进行额外的磁盘访问。

我的代码:

DirectoryInfo di = new DirectoryInfo(myDir);
FileInfo[] allFiles = di.GetFiles("*.*", SearchOption.TopDirectoryOnly);
foreach (FileInfo fInfo in allFiles)
{
    name = fInfo.Name  //no additional disk access made
    lastMod = fInfo.LastWriteTimeUtc  //further disk access made!!!
}

有没有人知道我可以在一次往返中获得这些信息的方式?我希望DirectoryInfo.GetFiles()能做到这一点,但没有运气。

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果真的关心这个问题,你应该使用FindFirstFile / GetFileTime等在C中写这个。

答案 1 :(得分:0)

所以,这是通过设计实现的。 LastWriteTimeUtc是延迟加载的。所以别无其他可以写我自己的组件。