一尘不染

您可以使用多个过滤器调用Directory.GetFiles()吗?

c#

我正在尝试使用该Directory.GetFiles()方法来检索多种类型的文件列表,例如mp3jpg。我没有运气就尝试了以下两种方法:

Directory.GetFiles("C:\\path", "*.mp3|*.jpg", SearchOption.AllDirectories);
Directory.GetFiles("C:\\path", "*.mp3;*.jpg", SearchOption.AllDirectories);

有没有办法在一个电话中做到这一点?


阅读 233

收藏
2020-05-19

共1个答案

一尘不染

对于.NET 4.0及更高版本,

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

对于早期版本的.NET,

var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

编辑: 请阅读评论。 Paul Farry建议的改进以及Christian.K指出的内存/性能问题都很重要。

2020-05-19