जिम्मेदार बताते हैं मैं DirectoryInfo.GetDirectories()
उपयोग कर रहा हूँ रिकर्सिवली किसी विशेष पथ के तहत सभी उप-निर्देशिका खोजने के लिए। हालांकि, मैं सिस्टम फ़ोल्डरों को बाहर करना चाहता हूं और इसके लिए कोई स्पष्ट तरीका नहीं है। FindFirstFile/FindNextFile चीजों में विशेषताओं के साथ स्पष्ट थे।DirectoryInfo.GetDirectories() और
6
A
उत्तर
8
@rslite सही है, .नेट ऐसे छानने के बाहर के बॉक्स देना नहीं है, लेकिन इसे लागू करने के लिए मुश्किल नहीं है:
static IEnumerable<string> GetNonSystemDirs(string path)
{
var dirs = from d in Directory.GetDirectories(path)
let inf = new DirectoryInfo(d)
where (inf.Attributes & FileAttributes.System) == 0
select d;
foreach (var dir in dirs)
{
yield return dir;
foreach (var subDir in GetNonSystemDirs(dir))
{
yield return subDir;
}
}
}
MSDN लिंक:
0
आप शायद परिणामों के माध्यम से पाश के लिए है और विशेषताओं है कि आप (गुण संपत्ति का उपयोग करें) नहीं करना चाहती के साथ उन लोगों को अस्वीकार चाहते हैं।
3
यह एक परिदृश्य में जहाँ Linq और विस्तार तरीकों चीजें वास्तव में स्वच्छ और आसान बनाने का एक बड़ा उदाहरण है।
public static DirectoryInfo[] GetNonSystemDirectories(
this DirectoryInfo directory,
string searchPattern,
SearchOption searchOption)
{
return directory.GetDirectories(searchPattern, searchOption)
.Where(subDir => (subDir.Attributes & FileAttributes.System) == 0)
.ToArray();
}
आप एक .net v2 आवेदन का निर्माण कर रहे हैं, तो आप LinqBridge का उपयोग आप वस्तुओं तरीकों के सभी शांत Linq के लिए पहुँच (जैसे कहाँ() और toArray() ऊपर) देने के लिए कर सकते हैं।
संपादित
.net में v4 आप GetDirectories के बजाय EnumerateDirectories जो आप पहली बार स्मृति में एक सरणी के निर्माण के बिना परिणाम से अधिक चीज़ों को दोहरा सकते का उपयोग करेंगे।
public static IEnumerable<DirectoryInfo> EnumerateNonSystemDirectories(
this DirectoryInfo directory,
string searchPattern,
SearchOption searchOption)
{
return directory.EnumerateDirectories(searchPattern, searchOption)
.Where(subDir => (subDir.Attributes & FileAttributes.System) == 0);
}
0
परम मीठा Linq
IEnumerable<string> directories = new DirectoryInfo(path).GetDirectories().Where(a => (a.Attributes & FileAttributes.System) == 0).Select(a => a.FullName);
संबंधित मुद्दे
- 1. "#", "$", "%", "&", और "_" "\ #", "\ $", "\%", "\ &", और "\ _"
- 2. प्रदर्शन और सॉर्टिंग, और mysql और php
- 3. "और" और "या"
- 4. "बिटवाइस और" और सी ++
- 5. getters और setters और
- 6. और बनाम * और | बनाम +
- 7. सीएसएस "और" और "या"
- 8. {} और {}
- 9. और
- 10. $ (...) और `...`
- 11. $ * और $ @
- 12. और
- 13. जावास्क्रिप्ट शॉर्टैंड अगर-और और
- 14. क्षमताओं और लिनक्स और जावा
- 15. MySQL और PHP और jquery
- 16. जावा और सी # और .NET
- 17. UILabel और numberOfLines और sizeToFit:
- 18. लिखें और और फिर विधियां
- 19. XHTML और और (एम्पसेंड) एन्कोडिंग
- 20. बेंचमार्क और सी # और जावा
- 21. रेल और मार्कडाउन और संपादक
- 22. अंतर और इरादा और सेटकंटेंटव्यू
- 23. Mercurial और maven (और svn)
- 24. सी ++ नया और हटाएं और स्ट्रिंग और फ़ंक्शंस
- 25. डब्ल्यूपीएफ और सिल्वरलाइट नियंत्रण और लेआउट पैन और ज़ूम क्षमताओं
- 26. कॉफ़ीस्क्रिप्ट क्लास और स्कोप और वसा और पतले तीर
- 27. (OrElse और Or) और (और इसके अलावा और) - कब उपयोग करें?
- 28. एमवीपी और उपयोगकर्ता नियंत्रण और आमंत्रण
- 29. घूर्णन और स्थिति: पूर्ण (IE8 और निचला)
- 30. टिंकर और wxwidgets के पेशेवरों और विपक्ष?
Directory.GetDirectories रिटर्न तार का उपयोग करना, आप इसे कैसे से विशेषताएं मिलता है? :) – aku
@aku मैं DirectoryInfo.GetDirectories उदाहरण विधि का उपयोग कर रहा हूं, निर्देशिका नहीं .GetDirectories स्थिर एक। –
उपज रिटर्न का उपयोग करके एक वास्तविक रिकर्सिव इटरेटर बनाने के रूप में कुशल/प्रयोग योग्य नहीं है। SearchOption.AllDirectories का उपयोग करके बड़ी निर्देशिका पदानुक्रमों पर इतना अच्छा नहीं है। – Ash