最快的.NET方法从远程网络共享中的文件中检索大多数元数据?

Bra*_*don 0 .net c# io .net-4.0 fileinfo

在可用的.NET System.IO方法/类中,检索远程网络共享上的整个目录列表的最有效方法是什么(假设一个缓慢的非LAN速度链接)?

对于10,000多个文件,需要抓取:

  1. 名称
  2. 尺寸
  3. 上次修改日期
  4. 创建日期

FileInfo对于此信息循环对象所花费的时间量与Windows资源管理器可以显示相同内容的时间量之间似乎存在巨大的性能差异.

Han*_*ant 7

是的,这是在.NET 1.0中为FileInfo类进行的设计选择的副作用.它在构造FileInfo对象时不存储属性值,在使用属性getter时从文件中检索它.这样,您始终可以获得房产的最新价值.这当然对于大小和日期属性来说很重要,它们很容易变异.然而,通过网络的往返使得它变慢.

它是在.NET 4中使用添加的DirectoryInfo.EnumerateXxxx()方法解决的.强调一个枚举器现在很明显你得到了一个可能过时的文件信息副本.但避免往返.

如果你可以使用.NET 4,解决你的问题.如果你不能,你需要pinvoke FindFirstFile,FindNextFile,FindClose.