2011-12-15 85 views
0

可能重复:
GetFiles with multiple extentionsDirectory.getfiles()与多个通配符或过滤器替代在C#

我想使用多个过滤器如: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:\被指定,这个方法是否会搜索整个驱动​​器? 任何人都可以给我建议的方法来添加子文件夹中搜索以这种方法明确

回答

0

您也可以运行在总成绩LINQ查询得到你想要的文件和工会结果