11

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

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

(我宁愿避免使用 win32 互操作,因为我也打算在 Mono 上使用它。)

非常感谢。

4

2 回答 2

8

您不能在 .NET 3.5 中执行此操作,但您可以在 .NET 4.0 中执行此操作,根据此博客文章

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。

于 2010-02-19T10:13:01.020 回答
1

查看CodeProject 网站上的FastDirectoryEnumerator项目。

它完全满足您的需求,甚至更多,我能够在具有大量文件的慢速网络共享上成功使用它,并且性能非常好。

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

于 2010-02-26T06:14:02.590 回答