2012-01-10 18 views
57

के साथ कई फाइलों को हटाना आप जानते हैं कि लिनक्स में यह आसान है लेकिन मैं समझ नहीं पा रहा हूं कि विंडोज़ पर सी # में इसे कैसे किया जाए। मैं वाइल्डकार्ड f*.txt से मेल खाने वाली सभी फाइलों को हटाना चाहता हूं। मैं इसे जाने के बारे में कैसे जा सकता हूं?वाइल्डकार्ड

उत्तर

117

आप उपयोग कर सकते हैं DirectoryInfo.EnumerateFiles function:

var dir = new DirectoryInfo(directoryPath); 

foreach (var file in dir.EnumerateFiles("f*.txt")) { 
    file.Delete(); 
} 

(। बेशक, आप शायद त्रुटि हैंडलिंग में जोड़ना चाहेंगे)

8

आप वाइल्डकार्ड अधिभार के साथ Directory.GetFiles विधि का उपयोग कर सकते हैं। यह आपके पैटर्न से मेल खाने वाले सभी फ़ाइल नामों को वापस कर देगा। फिर आप इन फ़ाइलों को हटा सकते हैं।

33

मैं जानता हूँ कि यह पहले से ही उत्तर दिया गया है और एक अच्छा जवाब के साथ है, लेकिन .NET 4.0 और उच्च में एक वैकल्पिक है। Directory.EnumerateFiles() का उपयोग करें, इस प्रकार:

foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt")) 
{ 
    File.Delete(f); 
} 

DirectoryInfo.GetFiles() का नुकसान यह है कि यह फ़ाइलों की एक सूची देता है - जो समय की 99.9% महान है। नुकसान यह है कि फ़ोल्डर में हजारों फाइलें हैं (जो दुर्लभ है) तो यह बहुत धीमी हो जाती है और मेल खाने वाली फाइलों के माध्यम से गणना करना बहुत तेज होता है।

+2

ध्यान दें कि 'DirectoryInfo' में' एन्युमेरेटफाइल() 'भी है। – TrueWill

+3

यदि कोई सोच रहा है कि यह उत्तर स्वीकार्य उत्तर के समान क्यों है, तो ऐसा इसलिए है क्योंकि स्वीकार किए गए उत्तर को इस के प्रकाश में फिर से लिखा गया है। जो शर्म की बात है क्योंकि 'DirectoryInfo.GetFiles() '(जो मूल उत्तर था) का उपयोग करना .NET के पुराने संस्करणों के लिए ऐसा करने का एकमात्र तरीका है। –

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