VB.NET 中的递归文件搜索

NPS*_*NPS 3 vb.net recursion file-search

我有一个函数可以对文件进行递归目录搜索,但是当我搜索驱动器时,出现访问被拒绝错误,这会停止搜索。我怎样才能避免这些错误?

这是我使用的功能:

lstSearch = GetFilesRecursive(FolderBrowserDialogMain.SelectedPath)

Private Function GetFilesRecursive(ByVal path As String) As List(Of String)
    Dim lstResult As New List(Of String)
    Dim stkStack As New Stack(Of String)
    stkStack.Push(path)
    Do While (stkStack.Count > 0)
        Dim strDirectory As String = stkStack.Pop
        Try
            lstResult.AddRange(Directory.GetFiles(strDirectory, "*.mp3"))
            Dim strDirectoryName As String
            For Each strDirectoryName In Directory.GetDirectories(strDirectory)
                stkStack.Push(strDirectoryName)
            Next
        Catch ex As Exception
        End Try
    Loop
    Return lstResult
End Function
Run Code Online (Sandbox Code Playgroud)

感谢您提供任何解决方案。

小智 5

感谢您的代码,它有效,但仔细观察后,我发现这一行可以完成这项工作:

myfiles = IO.Directory.GetFiles(strpath, "*.*", IO.SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)

只需将搜索选项从 TopDirectoryOnly 更改为 AllDirectories。我总是希望使用本机函数。