2010-04-23 11 views
16

से मेल खाते हैं # सी # में एक स्ट्रिंग मान से मेल खाने वाली फ़ाइलों को खोजने के लिए मैं फ़ोल्डर और उसके सबफ़ोल्डर से कैसे खोज सकता हूं। मेरा स्ट्रिंग मान "एबीसी 123" हो सकता है और एक मिलान फ़ाइल एबीसी 123_200522.tif हो सकती है। क्या एक ऐरे इन्हें इकट्ठा कर सकता है? अग्रिम में धन्यवाद।एक फ़ोल्डर और उसके उपफोल्डर्स में सभी फ़ाइलों को कैसे एकत्र करें जो स्ट्रिंग

-Josh

उत्तर

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); 
      } 

जहां sMatch क्या के लिए खोज करने के मापदंड है।

+2

स्लाक्स उत्तर (नीचे) वास्तव में बेहतर तरीका है + अधिक संक्षिप्त! – cacau

+0

मैं भी सहमत हूं http://stackoverflow.com/a/2700080/14753 क्लीनर है – Glennular

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

आप विकल्पों के लिए एक दूसरे पैरामीटर में पारित कर सकते हैं। इसके अलावा, आप परिणामों को फ़िल्टर करने के लिए linq का उपयोग भी कर सकते हैं।

जांच here for MSDN documentation

5

मिलान आवश्यकताओं सरल कर रहे हैं, की कोशिश:

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

अगर वे कुछ और अधिक जटिल की आवश्यकता होती है , आप नियमित अभिव्यक्तियों का उपयोग कर सकते हैं (और 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

धन्यवाद आवश्यकता हो सकती है! – Ron16

1

स्मृति से इतना फेरबदल वहाँ उपयोगी थोड़ा अतिरिक्त के लिए

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); 
    } 
    } 
} 
संबंधित मुद्दे