2010-04-23 19 views

Antwort

3
void DirSearch(string sDir) 
     { 
      try 
      { 
       foreach (string d in Directory.GetDirectories(sDir)) 
       { 
        foreach (string f in Directory.GetFiles(d, sMatch)) 
        { 
          lstFilesFound.Add(f); 
        } 
        DirSearch(d); 
       } 
      } 
      catch (System.Exception excpt) 
      { 
       Console.WriteLine(excpt.Message); 
      } 

wo sMatch die Kriterien sind, was zu suchen.

+2

SLaks Antwort (unten) ist eigentlich viel besser + prägnanter! – cacau

+0

Ich stimme auch zu http://stackoverflow.com/a/2700080/14753 ist sauberer – Glennular

5
DirectoryInfo di = new DirectoryInfo("c:/inetpub/wwwroot/demos"); 
FileInfo[] rgFiles = di.GetFiles("*.aspx"); 

Sie können für die Optionen in einem zweiten Parameter übergeben. Außerdem können Sie linq verwenden, um die Ergebnisse noch weiter zu filtern.

Scheck here for MSDN documentation

5

Wenn die passenden Anforderungen einfach sind, versuchen:

string[] matchingFiles = System.IO.Directory.GetFiles(path, "*ABC123*"); 

Wenn sie benötigen etwas komplizierter , können Sie reguläre Ausdrücke (und LINQ):

string[] allFiles = System.IO.Directory.GetFiles(path, "*"); 
RegEx rule = new RegEx("ABC[0-9]{3}"); 
string[] matchingFiles = allFiles.Where(fn => rule.Match(fn).Success) 
           .ToArray(); 
+0

Vielen Dank für den nützlichen wenig mehr zwicken! – Ron16

1

Aus dem Gedächtnis benötigen, so kann es

class Test 
{ 
    ArrayList matches = new ArrayList(); 
    void Start() 
    { 
    string dir = @"C:\"; 
    string pattern = "ABC"; 
    FindFiles(dir, pattern); 
    } 

    void FindFiles(string path, string pattern) 
    { 
    foreach(string file in Directory.GetFiles(path)) 
    { 
     if(file.Contains(pattern)) 
     { 
     matches.Add(file); 
     } 
    } 
    foreach(string directory in Directory.GetDirectories(path)) 
    { 
     FindFiles(directory, pattern); 
    } 
    } 
} 
Verwandte Themen