0

我有以下代码来尝试获取父目录及其所有子目录中的所有文件名。

该代码有效,但不是我想要的。即它将处理父目录中的所有文件以及子目录的“第一级”中的所有文件,但我希望能够进入所有级别的子目录。

我怎么做?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'ListBox1.Items.AddRange(IO.Directory.GetFiles("C:\"))

    For Each Dir As String In IO.Directory.GetDirectories("C:\Program Files")
        ' ListBox1.Items.Add(Dir)
        ListBox1.Items.AddRange(IO.Directory.GetFiles(Dir))
    Next
End Sub
4

1 回答 1

1

这是只需两行代码即可完成您想要的操作:

    Dim result As List(Of String) = System.IO.Directory.GetFiles("C:\Program Files", "*", System.IO.SearchOption.AllDirectories)
    listBox1.DataSource = result

[在这篇文章中感谢@Carsten ,它列出了子目录,我更改为列出文件并将其绑定到 ListBox 元素。我不知道递归解决方案已经在 System.IO 中实现]

Edit1:接受评论建议。

Edit2: GetFiles 不允许解决此问题:当您尝试读取时,可以配置为使当前用户无法访问它们。更多细节(和递归函数的解决方案)在这里

于 2015-07-22T14:29:48.227 回答