.NET 3.5中的EnumerateFiles()等效项

时间:2011-02-03 16:36:30

标签: .net io lazy-loading

我正在尝试使用.NET 3.5和PowerShell清理目录中超过150K的文件。由于文件太多,我不想通过一次读取所有内容来影响服务器性能。是否有任何使用.NET 3.5或PowerShell的机制或可通过PInvoke访问的方法允许我懒惰地加载文件?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

如果通过“加载”意味着以懒惰的方式获取目录中的文件列表,则有几个选项。

从.NET 4.0开始,您可以使用新的Directory.EnumerateFiles API来获取特定目录中的流(懒惰)文件序列。搜索按需返回项目,因此不需要与现有GetFiles方法一样多的内存。

如果你不能使用.NET 4,那么你将不得不推出自己的流文件枚举器。这需要使用FindFirstFileFindNextFile Win32 API。但是,您可以在CodeProject上查看this implementation,因为它似乎就是这样。