首页 > 解决方案 > 如何在 GetFiles 中设置选项以包含子目录

问题描述

我正在使用下面的代码尝试列出目录及其所有子目录中的所有文件。我得到的是“根”目录中的那些,而不是其他的。调查告诉我,我必须为 GetFiles 设置一个搜索选项,但我找不到该选项是什么或如何设置它。我会很感激任何帮助。

        For Each foundFile As String In My.Computer.FileSystem.GetFiles(strArchRoot)
            ListBox1.Items.Add(foundFile)
        Next

标签: vb.net

解决方案


一个问题是,如果它们是特权问题,上述两种方法都会很明显。这种方法将本地化。

使用功能

    ListBox1.Items.AddRange((From o As Object In GetFiles(strArchRoot)
                                Select o).ToArray)

功能

Private Function GetFiles(strArchRoot As String) As List(Of String)
    Dim rv As New List(Of String)
    Try
        rv.AddRange(GetSubFiles(strArchRoot))
    Catch ex As Exception

    End Try
    Return rv
End Function

Private Function GetSubFiles(folder As String) As List(Of String)
    Dim rv As New List(Of String)
    Try
        rv.AddRange(System.IO.Directory.GetFiles(folder, "*.*", IO.SearchOption.TopDirectoryOnly))
    Catch ex As Exception
    End Try
    Dim ds() As String
    Try
        ds = System.IO.Directory.GetDirectories(folder)
        For Each p As String In ds
            rv.AddRange(GetSubFiles(p))
        Next

    Catch ex As Exception

    End Try
    Return rv
End Function

推荐阅读