फ़ोल्डर में एक निश्चित एक्सटेंशन के साथ एक फ़ाइल ढूंढें


91

एक फ़ोल्डर पथ (जैसे C:\Random Folder) को देखते हुए , मैं इसमें एक फ़ाइल कैसे पा सकता हूं जो एक निश्चित एक्सटेंशन रखती है, जैसे txt? मुझे लगता है कि मुझे *.txtनिर्देशिका में एक खोज करनी होगी , लेकिन मुझे यकीन नहीं है कि मैं इस खोज को पहले स्थान पर कैसे शुरू करूँ।

जवाबों:


176

को देखो System.IO.Directoryवर्ग और स्थिर विधि GetFiles। इसमें एक अधिभार है जो एक पथ और एक खोज पैटर्न को स्वीकार करता है। उदाहरण:

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

धन्यवाद! सभी उत्तर अच्छे थे, लेकिन आपने पहले उत्तर दिया ... हाँ :)
डोमिनिक के

6
यदि एक्सटेंशन txt_ जैसा कुछ होगा तो यह काम नहीं करता है। मैं यह निर्धारित करने की कोशिश कर रहा हूं कि क्या फ़ोल्डर में कोई * .exe फ़ाइल है, और मेरे पास केवल एक * .exe_ फ़ाइल है, लेकिन क्वेरी इसे लौटा देती है, जो सही नहीं है।
एड्रियन

1
द डॉक्यूमेंटेशन: msdn.microsoft.com/en-us/library/8he88b63(v=vs.110).aspx
Randall Flagg

क्या होगा अगर मुझे सिंगल फाइल चाहिए, जिसका नाम हैmacos.txt
प्रशांत पिम्पले

मैं बिना किसी एक्सटेंशन के सभी फाइलें ढूंढना चाहता हूं। मेरे पास फ़ाइल प्रकार "फ़ाइल" (कोई एक्सटेंशन नहीं) के साथ कुछ फाइलें हैं, मैं उन फाइलों को कैसे खोज सकता हूं?
सोहैबी

31

आप निर्देशिका वर्ग का उपयोग कर सकते हैं

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)

3
यह काम नहीं करता है अगर विस्तार txt_ या कुछ और होगा जैसा कि प्रलेखन में कहा गया है msdn.microsoft.com/en-us/library/wz42302f(v=vs.110).aspx
रान्डेल फ्लैग

14

यह वास्तव में काफी आसान है। आप System.IO.Directoryके साथ संयोजन के रूप में वर्ग का उपयोग कर सकते हैं System.IO.Path। कुछ इस तरह (LINQ का उपयोग करने से यह और भी आसान हो जाता है):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

इस तकनीक पर भी कई विविधताएं हैं, निश्चित रूप से। यदि आपका फ़िल्टर सरल है, तो कुछ अन्य उत्तर सरल हैं। यह देरी कोड (यदि वह मायने रखता है) और अधिक कोड की कीमत पर अधिक लचीला फ़िल्टरिंग का लाभ है।


इसमें आपके द्वारा डाले गए सभी अतिरिक्त कार्यों के लिए धन्यवाद। हालाँकि, मैं केवल एक साधारण कथन के लिए जा रहा हूं क्योंकि मेरे पास निर्देशिका में केवल एक पाठ फ़ाइल है (इसे मेरे प्रोग्राम द्वारा निकाला गया था)।
डोमिनिक के

3

नीचे दी गई विधि केवल कुछ एक्सटेंशन के साथ फाइल लौटाती है (जैसे: .txt के साथ फ़ाइल लेकिन .txt1 नहीं।)

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }

1

मेरी समझ के अनुसार, यह दो तरीकों से किया जा सकता है:

1) आप हमारे आवश्यक विस्तार की जांच करने के लिए गेटफाइल्स विधि के साथ डायरेक्टरी क्लास का उपयोग कर सकते हैं और सभी फाइलों को पार कर सकते हैं।

Directory.GetFiles ( "your_folder_path) [मैं] .Contains (" *। Txt ")

2) आप पाथ क्लास को गेटटेक्स्टेंशन मेथड के साथ उपयोग कर सकते हैं जो फाइल पथ को एक पैरामीटर के रूप में लेता है और एक्सटेंशन को सत्यापित करता है। फ़ाइल पथ प्राप्त करें, बस एक लूपिंग स्थिति है जो एक एकल फ़ाइल लाएगा और सत्यापन के लिए उपयोग की जा सकने वाली फ़ाइलपथ लौटा सकता है।

Path.GetExtension (your_file_path) .Equals ( "। Json")

नोट: दोनों लॉजिक को लूपिंग कंडीशन के अंदर होना चाहिए।


-1

सभी प्रकार की एक्सटेंशन फ़ाइल के साथ रीड फ़ाइल के लिए इस कोड का उपयोग करें।

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.