在C中扫描文件时忽略错误:

时间:2010-06-07 05:09:40

标签: vb.net recursion listbox

我正在尝试在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

如果遇到错误,如何使此代码继续?

1 个答案:

答案 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
相关问题