我正在尝试在C:\驱动器中搜索具有特定扩展名的所有文件。我正在使用以下代码正常工作,但是当遇到错误时,整个过程停止而不是继续扫描。 (在后台工作中运行,因此调用)
Private Sub ScanFiles(ByVal rootFolder As String, ByVal fileExtension As String)
'Determine if the current folder contains any sub folders
Dim subFolders() As String = System.IO.Directory.GetDirectories(rootFolder)
For Each subFolder As String In subFolders
ScanFiles(subFolder, fileExtension)
Next
For Each file As String In System.IO.Directory.GetFiles(rootFolder, fileExtension)
lb.BeginInvoke(New AddValue(AddressOf AddItems), file)
Next
End Sub
如果遇到错误,如何使此代码继续?
答案 0 :(得分:1)
如果您无权探索C驱动器本身,那么您就不走运了。但是如果由于您无权访问树中的某个子文件夹而导致异常,则可以通过将代码放在try-catch块中来避免它。
Private Sub ScanFiles(ByVal rootFolder As String, ByVal fileExtension As String)
'Determine if the current folder contains any sub folders '
try
Dim subFolders() As String = System.IO.Directory.GetDirectories(rootFolder)
For Each subFolder As String In subFolders
ScanFiles(subFolder, fileExtension)
Next
For Each file As String In System.IO.Directory.GetFiles(rootFolder, fileExtension)
lb.BeginInvoke(New AddValue(AddressOf AddItems), file)
Next
catch (Ex As UnauthorizedAccessException)
'Ignore Access Errors '
end try
End Sub