带有多个通配符或过滤器的Directory.getfiles()替代c#

时间:2011-12-15 07:49:14

标签: c# .net winforms file directory

  

可能重复:
  GetFiles with multiple extentions

我想使用多重过滤器,例如:.mp3,.jpg来检索这些类型文件的字符串数组。但遗憾的是,Directory.getfiles()无法有效地提供此功能。

我知道这个问题在这里已被多次询问,但我刚刚在http://www.beansoftware.com/ASP.NET-FAQ/Multiple-Filters-Directory.GetFiles-Method.aspx找到了一篇文章

给出了解决此问题的以下功能

public string[] getFiles(string SourceFolder, string Filter,
 System.IO.SearchOption searchOption)
{
 // ArrayList will hold all file names
ArrayList alFiles = new ArrayList();

 // Create an array of filter string
 string[] MultipleFilters = Filter.Split('|');

 // for each filter find mathing file names
 foreach (string FileFilter in MultipleFilters)
 {
  // add found file names to array list
  alFiles.AddRange(Directory.GetFiles(SourceFolder, FileFilter, searchOption));
 }

 // returns string array of relevant file names
 return (string[])alFiles.ToArray(typeof(string));
}

我想知道这个方法是否有效。如果指定驱动器例如:C:\,这个方法会搜索整个驱动​​器吗? 任何人都可以建议我一种方法来明确地添加子文件夹搜索到这个方法

1 个答案:

答案 0 :(得分:0)

您还可以对总结果运行LINQ查询以获取所需文件并 union 结果