2010-03-11 55 views
5

Đây là câu hỏi Stackoverflow đầu tiên của tôi, tôi đang học VB và gặp một số vấn đề với danh sách tất cả thư mục/thư mục trên hệ thống. Tôi đang sử dụng mã bao gồm ở đây và có vẻ như để làm việc cho đến khi nó chạm vào thư mục thùng rác, và một số hệ thống khác thư mụcNhận tất cả danh sách thư mục/thư mục trong 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 

bất cứ ai có thể giúp tôi với điều này? Tôi muốn biết điều gì đang gây ra điều này trước tiên, và sửa chữa tốt, hoặc cách khác để làm điều này.

Xin cảm ơn trước.

+1

Lỗi hoặc hành vi bất ngờ mà bạn đang thấy là gì? –

Trả lời

6

Không cho phép truy cập vào một số thư mục. Bạn có thể sử dụng khối Thử-Catch xung quanh Directory.GetDirectories(StartPath) hoặc bạn có thể kiểm tra các thuộc tính của thư mục trước.

+0

Cảm ơn xpda, tôi đã thử "lỗi trên tiếp tục mà không có nhiều may mắn, nhưng" Try Catch "hoạt động hoàn hảo cho nhu cầu của tôi, mất khoảng 2 giây trên SSD của tôi để tìm 50k thư mục và khoảng 12 giây trên máy tính xách tay của tôi 5400RPM ổ đĩa để tìm 32k của thư mục .... đủ nhanh cho nhu cầu của tôi anyway Cảm ơn bạn ngón tay cái lên! Nếu có ai có đề xuất tốt hơn về cách tìm nạp cấu trúc thư mục đầy đủ nhanh hơn hoặc bằng cách thân thiện hơn. –

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

Bạn có một đôi End Sub trong mã của mình!

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 
Các vấn đề liên quan