Vb.net 获取a侧目录中的所有文件夹和子文件夹
我正在学习VB.net,我想知道如何获取目录中的所有文件夹和子文件夹,以及如何将它们全部添加到列表框中。我也希望它列出的文件夹,而它是扫描一样,显示当前找到的文件夹。我试过一些方法,但似乎都不管用。我试过这个:Vb.net 获取a侧目录中的所有文件夹和子文件夹,vb.net,directory,Vb.net,Directory,我正在学习VB.net,我想知道如何获取目录中的所有文件夹和子文件夹,以及如何将它们全部添加到列表框中。我也希望它列出的文件夹,而它是扫描一样,显示当前找到的文件夹。我试过一些方法,但似乎都不管用。我试过这个: Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList) Dim Dirs() As String = Directory.GetDirectories(StartPath)
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
For Each item In DirectoryList
ListBox1.Items.Add(item)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim DirList As New ArrayList
GetDirectories("c:\hexing\", DirList)
End Sub
使用该方法
试试这个
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim DirList As New ArrayList
Dim Dirs() As String = Directory.GetDirectories(StartPath)
DirList.AddRange(Dirs)
For Each Dir As String In Dirs
GetDirectories(Dir, DirectoryList)
Next
Catch ex As Exception
End Try
End Sub
(或)
编辑
根据:
最有效的方法是使用递归性:
最简单的是:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
GetDirectories(Label1.Text)
End Sub
Sub GetDirectories(ByVal StartPath As String)
For Each Dir As String In IO.Directory.GetDirectories(StartPath)
CheckedListBox1.Items.Add(Dir)
GetDirectories(Dir)
Next
End Sub
第二个没有得到所有的文件夹,我希望它得到主目录中的所有文件夹,然后得到这些文件夹中的所有子文件夹。谢谢anyway@xGh0stSn1p3r请参阅我的编辑。它会给你所有的子文件夹,但在一开始,它会冻结,只是停留在那里一段时间,不能移动它或任何东西。有没有办法在后台运行它,以便您仍然可以移动表单?或者甚至在每次找到一个目录时将每个目录添加到列表框中,而不是仅仅停留在那里?谢谢编辑*在ListBox上它只显示string[]数组。我已经尝试过了,它可以工作,但是它没有得到目录中的子文件夹,我希望它能得到每个文件夹中的每个子文件夹。感谢anywaLooks,像您这样的人在第一行代码的开头短了3个空格(但我无法修复它,因为编辑必须至少6个字符)。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For Each Dir As String In Directory.GetDirectories("c:\Program Files")
ListBox1.Items.Add(Dir)
Next
End Sub
Private Function getAllFolders(ByVal directory As String) As String()
'Create object
Dim fi As New IO.DirectoryInfo(directory)
'Array to store paths
Dim path() As String = {}
'Loop through subfolders
For Each subfolder As IO.DirectoryInfo In fi.GetDirectories()
'Add this folders name
Array.Resize(path, path.Length + 1)
path(path.Length - 1) = subfolder.FullName
'Recall function with each subdirectory
For Each s As String In getAllFolders(subfolder.FullName)
Array.Resize(path, path.Length + 1)
path(path.Length - 1) = s
Next
Next
Return path
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
GetDirectories(Label1.Text)
End Sub
Sub GetDirectories(ByVal StartPath As String)
For Each Dir As String In IO.Directory.GetDirectories(StartPath)
CheckedListBox1.Items.Add(Dir)
GetDirectories(Dir)
Next
End Sub