在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中文网其他相关文章!