使用Directory.GetFiles的多个过滤器?

时间:2011-01-05 11:07:21

标签: c# .net directory getfiles

我正在尝试使用Directory.GetFiles()命令的多个过滤器。

所以说我想要匹配.html和.css文件。我正在使用这个:

Directory.GetFiles(path,"*.html|*.css");

我没有看到任何文档但是支持它,并且它最终不匹配HTML或CSS文件。有什么我想念的吗?

3 个答案:

答案 0 :(得分:3)

Directory.GetFiles函数不支持多个过滤器。我的解决方案:

string patter = "*.jpg|*.png|*.gif";
string[] filters = patter.Split('|');
foreach(string filter in filters )
{
  // call Directory.GetFiles(path, filter) here;
}

答案 1 :(得分:1)

还有一种下降解决方案可以避免foreach循环(在Linq的帮助下):

string[] filters = new[]{"*.jpg", "*.png", "*.gif"};
string[] filePaths = filters.SelectMany(f => Directory.GetFiles(basePath, f)).ToArray();

答案 2 :(得分:0)

之前已经问过这个问题(https://stackoverflow.com/questions/163162)并建议使用LINQ过滤结果的解决方案