2011-02-03 43 views
2

我正试图使用​​.NET 3.5和PowerShell清理超过150K的目录中的文件。由于有太多的文件,我不想通过一次读取所有内容来影响服务器的性能。有没有任何机制与.NET 3.5或PowerShell或方法可以通过PInvoke,这将允许我懒惰地加载文件?谢谢您的帮助。在.NET 3.5中相当于EnumerateFiles()

回答

3

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

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

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

+0

谢谢你的回答。我们不能使用.NET 4.0(但),我认为如果我们真的想要第二个选项就可以正常工作。 – smaclell 2011-02-03 17:23:16