>有效地使用Directory.getFiles()
>
Directory.GetFiles()
>挑战:多文件类型过滤
>
Directory.GetFiles()
>直接使用
>
>解决方案:
两种有效的方法绕过了以下限制:
1。利用Directory.EnumerateFiles()
(.net 4.0及以后):
提供了一种更具内存效率的方法,尤其是在处理许多文件时。它通过文件迭代而无需一次将它们全部加载到内存中。 然后,您可以使用linq:Directory.EnumerateFiles()
过滤结果
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); </code>
进行自定义过滤: Directory.GetFiles()
对于不理想的较旧的.NET版本或情况,您可以在以后使用自定义过滤器的情况下使用:
EnumerateFiles()
这与以前的方法相同,但最初将所有文件加载到内存中。
GetFiles()
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
两种方法都达到预期的结果,但通常优先考虑其内存效率,尤其是在处理大型目录时。 对于较小的目录,
>可能会更快,但是在许多文件中,内存开销可能会变得很重要。 选择最能为您的特定应用程序平衡性能和内存使用量的方法。>
以上是如何使用Directory.getFiles()使用多个过滤器检索文件?的详细内容。更多信息请关注PHP中文网其他相关文章!