2011-02-03 49 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