开发者

Ignore errors when scanning for files in C:

I am trying to search the C:\ drive for all files with a certain extension. I am using the following code which is working fine, however when it encounters an error the whole process stops rather than continuing with the scan. (running in backgroundworker, hence the invoke)

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(roo开发者_运维知识库tFolder)

        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

How can I make this code continue once an error is encountered?


If you don't have access to explore C drive itself then you are out of luck. but if you are getting an exception because you don't have access to some child folder in the tree, you can avoid it by putting your code in an try-catch block.

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜