【发布时间】:2015-07-22 07:05:20
【问题描述】:
我有以下代码来尝试获取父目录及其所有子目录中的所有文件名。
代码有效,但不是我想要的。即它将处理父目录中的所有文件以及子目录的“第一级”中的所有文件,但我希望能够进入所有级别的子目录。
我该怎么做?
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
【问题讨论】:
-
如果你想使用这样的代码,那么你需要编写一个递归方法。如果您正在搜索一个不包含任何无法访问的子文件夹的文件夹,只需使用
Directory.GetFiles的重载,它也允许您指定搜索子文件夹。就一行代码。 -
@jmcilhinney 其实你不需要递归方法...我也这么认为,但我做了一些研究,发现了下面的解决方案,只需2行代码即可实现。
-
您通常会将该目录添加到您的参数列表中,但 .NET 有一个内置方法,您可以将其链接起来,为您枚举所有子目录。
-
@XavierPeña,就像您甚至没有阅读我的评论一样。我说如果你想使用这样的代码,你需要使用递归方法,即一次检查一个文件夹的循环。我接着说,您可以通过调用
Directory.GetFiles来在一行中完成。
标签: vb.net getfiles getdirectories