VB.net

2010-03-11 15 views
5

में सभी फ़ोल्डर/निर्देशिका सूची प्राप्त करें यह मेरा पहला स्टैक ओवरफ्लो प्रश्न है, मैं वीबी सीख रहा हूं और सिस्टम पर सभी फ़ोल्डरों/निर्देशिकाओं की सूची प्राप्त करने में कुछ समस्याएं हैं। मैं कोड का उपयोग कर रहा यहाँ शामिल है और यह जब तक यह रीसायकल बिन फ़ोल्डर हिट काम करने के लिए लगता है, और कुछ अन्य सिस्टम फ़ोल्डरVB.net

Sub main() 

    Dim DirList As New ArrayList 
    GetDirectories("c:\", DirList) 


    For Each item In DirList 
     'add item to listbox or text etc here 
    Next 

End Sub 

Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList) 
    Dim Dirs() As String = Directory.GetDirectories(StartPath) 
    DirectoryList.AddRange(Dirs) 

    For Each Dir As String In Dirs 
     GetDirectories(Dir, DirectoryList) 
    Next 
End Sub 

किसी ने मुझे इस के साथ मदद कर सकते हैं? मैं जानना चाहता हूं कि यह पहले क्या कारण बन रहा है, और एक अच्छा फिक्स, या ऐसा करने का वैकल्पिक तरीका।

अग्रिम धन्यवाद।

+1

आप जो त्रुटि या अप्रत्याशित व्यवहार देख रहे हैं वह क्या है? –

उत्तर

6

कुछ फ़ोल्डरों तक पहुंच की अनुमति नहीं है। आप Directory.GetDirectories(StartPath) के आस-पास एक प्रयास-कैच ब्लॉक का उपयोग कर सकते हैं, या आप पहले से फ़ोल्डर के गुणों की जांच कर सकते हैं।

+0

धन्यवाद xpda, मैंने "बहुत अधिक भाग्य के बिना त्रुटि फिर से शुरू करने की कोशिश की थी, लेकिन" कोशिश करें "मेरी ज़रूरतों के लिए सही काम करता है, मेरे एसएसडी पर लगभग 2 सेकंड लगते हैं और मेरे लैपटॉप 5400 आरपीएम पर लगभग 12 सेकेंड मिलते हैं 32k फ़ोल्डरों को खोजने के लिए ड्राइव .... वैसे भी मेरी जरूरतों के लिए पर्याप्त तेज़ी से धन्यवाद! यदि किसी के पास पूर्ण निर्देशिका संरचना को या तो तेज़ी से या अधिक नेटनेट अनुकूल तरीके से लाने का बेहतर सुझाव है तो कृपया पोस्ट करें। –

4
Try 
    Dim Dirs() As String = Directory.GetDirectories(StartPath) 
    DirectoryList.AddRange(Dirs) 
    For Each Dir As String In Dirs 
     GetDirectories(Dir, DirectoryList) 
    Next 
    Catch ex As Exception 
End Try 
3

आप एक डबल End Sub अपने कोड में है!

Sub main() 

    Dim DirList As New ArrayList 
    GetDirectories("c:\", DirList) 


    For Each item In DirList 
     'add item to listbox or text etc here 
    Next 

' !!!!!! 
End sub 

End Sub 
' !!!!!! 

Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList) 
    Dim Dirs() As String = Directory.GetDirectories(StartPath) 
    DirectoryList.AddRange(Dirs) 

    For Each Dir As String In Dirs 
     GetDirectories(Dir, DirectoryList) 
    Next 
End Sub