正如标题所示,我正在寻找一种方法来获取目录中大量文件的属性,但不会为每个文件增加额外磁盘访问的成本。
例如,如果我在集合中获取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()能做到这一点,但没有运气。
提前致谢。
答案 0 :(得分:0)
如果真的关心这个问题,你应该使用FindFirstFile / GetFileTime等在C中写这个。
答案 1 :(得分:0)
所以,这是通过设计实现的。 LastWriteTimeUtc是延迟加载的。所以别无其他可以写我自己的组件。