Игнорировать ошибки при сканировании файлов в C: - PullRequest
0 голосов
/ 07 июня 2010

Я пытаюсь найти на диске 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 Ответ

1 голос
/ 07 июня 2010

Если у вас нет доступа, чтобы исследовать сам диск 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...