这是我的第一个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
任何人都可以帮我吗?我想知道是什么原因引起了这种情况,这是一个很好的解决办法,或者是另一种方法。
提前致谢。
答案 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