【问题标题】:EnumerateFiles() equivalent in .NET 3.5.NET 3.5 中的 EnumerateFiles() 等效项
【发布时间】:2011-02-03 16:36:30
【问题描述】:

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

【问题讨论】:

    标签: .net io lazy-loading


    【解决方案1】:

    如果“加载”是指以惰性方式获取目录中的文件列表,则有多种选择。

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

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

    【讨论】:

    • 感谢您的回答。我们还不能使用 .NET 4.0,我认为如果我们真的想要第二个选项就可以了。
    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 2014-06-29
    • 2010-09-21
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多