让Directory.GetFiles一次返回一个文件? (。净)

时间:2010-02-19 10:10:07

标签: .net directory getfiles

我有一个包含太多文件的文件夹,我想逐个浏览每个文件。问题是Directory.GetFiles返回一个已完成的数组,这需要太长时间。

我宁愿有一个对象我会指向一个文件夹,然后调用一个函数来返回文件夹中的下一个文件。 .NET有这样的类吗?

(我更愿意避免使用win32,因为我打算在Mono上使用它。)

非常感谢。

2 个答案:

答案 0 :(得分:8)

您不能在.NET 3.5中执行此操作,但您可以在.NET 4.0中as per this blog post

DirectoryInfo directory = new DirectoryInfo(@"\\share\symbols");
IEnumerable<FileInfo> files = directory.EnumerateFiles();
foreach (var file in files) {
    Console.WriteLine("Name={0}, Length={1}", file.Name, file.Length);
}

(同样,还有静态Directory.EnumerateFiles方法。)

我不知道该API是否已移植到Mono。

答案 1 :(得分:1)

查看CodeProject网站上的FastDirectoryEnumerator项目。

它完全符合您的需求,甚至更多,我能够在一个包含大量文件的慢速网络共享中成功使用它,性能非常好。

缺点 - 它使用互操作,因此它可能无法移植到Mono。