【发布时间】:2017-05-22 02:05:33
【问题描述】:
我有一个函数可以对文件进行递归目录搜索,但是当我搜索驱动器时,我收到拒绝访问的错误,这会停止搜索。如何避免这些错误?
这是我使用的函数:
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
感谢您提供任何解决方案。
【问题讨论】:
-
为什么是
Stack? -
Catch ex As Exception捕获异常但不采取任何措施有什么意义? -
Xaquon,我认为如果没有发现任何错误,它将继续在搜索中运行。
-
Zaggler,我看到了一个关于递归的例子并使用了代码。它适用于除驱动器之外的所有设备。
-
那里没有递归。递归要求方法直接或间接调用自身,而这并没有发生。你需要对递归做更多的研究。
标签: vb.net recursion file-search