获取VB.net中的所有文件夹/目录列表

时间:2010-03-11 19:46:59

标签: vb.net

这是我的第一个Stackoverflow问题,我正在学习VB并且在获取系统上所有文件夹/目录的列表时遇到一些问题。我正在使用此处包含的代码,它似乎工作,直到它到达回收站文件夹和其他一些系统文件夹

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

任何人都可以帮我吗?我想知道是什么原因引起了这种情况,这是一个很好的解决办法,或者是另一种方法。

提前致谢。

3 个答案:

答案 0 :(得分:6)

不允许访问某些文件夹。您可以在Directory.GetDirectories(StartPath)周围使用Try-Catch块,也可以事先检查文件夹的属性。

答案 1 :(得分: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

答案 2 :(得分: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