列出所有子导演中的所有文件,无论多少

时间:2015-07-22 07:05:20

标签: vb.net getfiles getdirectories

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

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

我该怎么做?

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

1 个答案:

答案 0 :(得分:0)

以下是只需两行即可完成所需操作的代码:

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

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

编辑1:发表评论建议。

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