我有一个函数可以对文件进行递归目录搜索,但是当我搜索驱动器时,出现访问被拒绝错误,从而停止搜索。我怎样才能避免这些错误?
这是我使用的函数:
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
感谢任何解决方案。
最佳答案
感谢您提供的代码,它有效,但仔细查看后,我发现这一行就可以完成这项工作:
myfiles = IO.Directory.GetFiles(strpath, "*.*", IO.SearchOption.AllDirectories)
只是将搜索选项从 TopDirectoryOnly 更改为 AllDirectories。我总是希望使用 native 函数。
关于vb.net - VB.NET 中的递归文件搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103640/