सी # .net में एक निर्देशिका में सभी फ़ाइलों के माध्यम से लूप कैसे करें?


121

मैं फ़ाइलों को फ़ोल्डर में और उसके सबफ़ोल्डर में भी प्राप्त करना चाहता हूं। निम्न कोड को उसके सबफ़ोल्डर में फ़ाइलें नहीं मिलती हैं:

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs");

क्या कोई मुझे बता सकता है कि इसे c # .net में कैसे लागू किया जाए?


2
मैंने हमेशा चीजों को करने का MSDN तरीका पसंद किया है। इस लिंक के नीचे वे एक पुनरावर्ती उदाहरण w / कंसोल प्रोग्राम (C #) प्रदान करते हैं।
जस्टिन

1
@Panuvin - नोट: MSDN कोड थोड़ा खतरनाक है। बहुत बड़े फ़ोल्डर और सबफ़ोल्डर सामग्री (कई कई फ़ाइलों) के लिए आप एक StackOverflow अपवाद (पुनरावर्ती कोड के कारण) प्राप्त कर सकते हैं
जोजर

जवाबों:


216
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories);

अंतिम पैरामीटर प्रभाव वही है जो आप बता रहे हैं। सबफ़ोल्डर सहित हर फ़ाइल के लिए इसे AllDirectories पर सेट करें , और इसे TopDirectoryOnly पर सेट करें यदि आप केवल दी गई निर्देशिका में खोजना चाहते हैं और सबफ़ोल्डर नहीं।

एमडीएसएन का विवरण देखें: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
यदि आपके फ़ोल्डर संरचना में कोई लूप है, तो यह अनंत लूप होगा। Msdn.microsoft.com/en-us/library/ms143448.aspx
एंथनी

मध्य पैरामीटर का उद्देश्य क्या है?
उपयोगी

2
इसे सर्चपाटर्न कहा जाता है और यह एक फिल्टर है जिसके द्वारा फाइलों का चयन किया जाता है। इस स्थिति में यह "ProfileHandler.cs" में समाप्त होने वाली सभी फ़ाइलों का चयन करेगा। MDSN
मिगवेल

3

कोड के नीचे प्रयास करें

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories)

1

आप डीप फोल्डर कॉपी दिखाते हुए इस पृष्ठ पर नज़र डाल सकते हैं, यह फ़ाइलों को पुनरावृत्त करने के लिए पुनरावर्ती साधनों का उपयोग करता है और इसमें कुछ बहुत अच्छी युक्तियां होती हैं, जैसे फ़िल्टरिंग तकनीक आदि।

http://www.codeproject.com/Tips/512208/Folder-Directory-Deep-Copy-including-sub-directori

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.