2013-01-04 83 views
1

我需要搜索目錄中的特定文件夾。只搜索目錄中的特定文件夾

我不想去找文件,也不需要搜索文件。

我可以搜索特定的文件夾目錄但我必須去文件的循環一樣

foreach (FileInfo f in dir.EnumerateFiles()) 
{ 
     //code 
} 
foreach (DirectoryInfo d in dir.EnumerateDirectories()) 
{ 
    Call function recursively 
} 

我只需要搜索特定的文件夾。因爲我有大約20000個文件,所以如果我使用上面的代碼,循環會去所有的文件,並花費更多的時間。

但我需要一些文件夾只喜歡

Regex.IsMatch(dir.FullName, @"1293.*T.*")) 

我該怎麼辦,如果沒有在文件中循環下去。

+0

林不知道你想要,但它的聲音,你只需要運行'的foreach(DirectoryInfo的d在dir.EnumerateDirectories()){ 電話 遞歸函數} ' – Jastill

回答

2

如果的Directory.GetDirectory過載提供的搜索模式是適合您的需求不夠強大,你可以使用自定義的方法。

static string SearchDirectory(string path, string pattern) 
{ 
    var regex = new Regex(pattern); 
    foreach (var d in Directory.GetDirectories(path)) 
    { 
     var dirName = d.Substring(d.LastIndexOf('\\') + 1); 
     if (regex.IsMatch(dirName)) return d; 
     SearchDirectory(d, pattern); 
    } 
    return null; 
    //Or throw an Exception 
} 

你可能想於環繞try/catchforeach循環。

1

您可以使用接受搜索模式的System.IO.Directory.GetDirectories overload

例如:

string[] dirs = Directory.GetDirectories(@"c:\", "c*"); 
+0

我已使用dir.EnumerateDirectories(「1293 * T *」)...它不適合我 –

0

你的問題很混亂,但你想獲得匹配正則表達式模式的目錄嗎?

foreach (DirectoryInfo d in dir.EnumerateDirectories().Where(d => Regex.IsMatch(dir.FullName, @"1293.*T.*"))) 
{ 

} 
相關問題