首页 > 后端开发 > C++ > 如何在Directory.getFiles()中组合多个文件过滤器?

如何在Directory.getFiles()中组合多个文件过滤器?

DDD
发布: 2025-01-26 19:06:11
原创
199 人浏览过

How Can I Combine Multiple File Filters in Directory.GetFiles()?

在Directory.GetFiles()中组合文件过滤器

.NET中的Directory.GetFiles()方法提供了一种方便的方法来检索与特定过滤器匹配的文件列表。但是,当尝试过滤多种文件类型时,默认行为是仅检索与第一个过滤器匹配的文件。

尽管尝试了诸如“.mp3|.jpg”和“.mp3;.jpg”之类的组合,但这些方法都无法在一个调用中捕获这两种文件类型。为了解决此限制,请考虑以下替代方案:

对于.NET 4.0及更高版本:

实现一个LINQ查询来过滤Directory.EnumerateFiles()的结果,该方法检索目录中的所有文件路径。查询过滤特定文件扩展名(.mp3和.jpg)。

<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
登录后复制

对于早期版本的.NET:

使用Directory.GetFiles()方法检索与任何扩展名(.)匹配的文件,并应用LINQ查询来过滤结果。

<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
登录后复制

注意: 请考虑注释中关于使用字符串Contains函数而不是EndsWith函数来优化性能的建议。此外,请注意使用EnumerateFiles()方法时可能出现的内存问题,如果没有先释放底层对象,可能会超过分配的内存限制。

以上是如何在Directory.getFiles()中组合多个文件过滤器?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板