2010-09-14 13 views
10

संभव डुप्लिकेट:
How to recursively list all the files in a directory in C#?बाद में सभी फ़ाइलों और फ़ोल्डरों को दिए गए पथ के नीचे सूचीबद्ध करता है?

मैं सूची फ़ाइलें और देने फ़ोल्डर (पथ) के लिए फ़ोल्डरों

की "उप पथ" मान लीजिए कि मैं जाने के लिए चाहते हैं फ़ोल्डर सी: \ फ़ाइलें \ folder1 \ subfolder1 \ file.txt

यदि मैं फ़ंक्शन c: \ files \ folder1 \

देता हूं

मैं मिल जाएगा subfolder1 subfolder1 \ file.txt

+4

आपने FileInfo और DirectoryInfo के साथ उपलब्ध एपीआई की जांच की है? जो व्यवहार आप चाहते हैं उसे कार्यान्वित करना उन वर्गों के साथ काफी छोटा है ... –

उत्तर

23

कोशिश कुछ:

static void Main(string[] args) 
{ 
    DirSearch(@"c:\temp"); 
    Console.ReadKey(); 
} 

static void DirSearch(string dir) 
{ 
    try 
    { 
     foreach (string f in Directory.GetFiles(dir)) 
      Console.WriteLine(f); 
     foreach (string d in Directory.GetDirectories(dir)) 
     { 
      Console.WriteLine(d); 
      DirSearch(d); 
     } 

    } 
    catch (System.Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 
24

आप एक फ़ोल्डर में सभी फ़ाइलें सूची Directory.GetFiles विधि का उपयोग कर सकते हैं:

string[] files = Directory.GetFiles(@"c:\files\folder1\", 
    "*.*", 
    SearchOption.AllDirectories); 

foreach (var file in files) 
{ 
    Console.WriteLine(file); 
} 

नोट कि SearchOption पैरामीटर का उपयोग यह नियंत्रित करने के लिए किया जा सकता है कि खोज रिकर्सिव है (SearchOption.AllDirectories) या नहीं (SearchOption.TopDirectoryOnly)। इस तरह

+1

इस समाधान में लौटाई गई सूची में फ़ोल्डर शामिल नहीं हैं। – galmok

+1

@galmok: 'Directory.GetFileSystemEntries (...) 'के बजाय' Directory.GetFiles (...)' और '" * "' '* * *' '' '' '' '' '' '' '' ''। – RiA

5
String[] subDirectories; 
String[] subFiles; 
subDirectories = System.IO.Directory.GetDirectories("your path here"); 
subFiles = System.IO.Directory.GetFiles("your path here"); 
+0

वास्तव में आसान और यह चट्टानों। लेकिन केवल नाम प्राप्त करने के लिए - foreach (उपनिर्देशिका में स्ट्रिंग स्ट्र) कंसोल। राइटलाइन (str.Split ('\\')। अंतिम()); foreach (सबफाइल में स्ट्रिंग स्ट्र) कंसोल। राइटलाइन (str.Split ('\\')। अंतिम()); – sapatelbaps

0

मुझे ऐसा नहीं भी बहुत पहले पर एक समान समस्या को हल करने की, हालांकि उन्होंने यह वीबी में था याद है। यहां question है।

संबंधित मुद्दे