Как пропустить каталог или файл, когда возникает UnauthorizedAccessException
Код ниже. Я пытаюсь получить файлы по определенному пути, как sDirPath
а затем сохранить в виде дерева, в основном делая диалоговое окно браузера пользовательских папок. Но проблема в том, что когда я получаю системные файлы или папки, которые недоступны, я получаю UnauthorizedAccessException
, Это происходит в папках или файлах, таких как скрытые и системные папки или файлы, например, $recyle.bin в C:\ или ярлыке Documents and Settings. Я просто хочу пропустить эти папки или файлы. Я не хочу их получать.
Dim sAllfiles() As String = Directory.GetFiles(sDirPath, "*.*")
For Each sfile As String In sAllfiles
Dim objFileInformation As FileInfo = New FileInfo(sfile)
Dim tnTreeNodeSub As TreeNode
tnTreeNodeSub=tnTreeNodeRootDirectory.Nodes.Add(objFileInformation.Name)
Next
2 ответа
Try .. Catch
заявления именно для этого.
Например, это будет игнорировать только UnauthorizedAccessException
, Любое другое исключение по-прежнему прерывает цикл.
Dim sAllfiles() As String = Directory.GetFiles(sDirPath, "*.*")
For Each sfile As String In sAllfiles
Try
Dim objFileInformation As FileInfo = New FileInfo(sfile)
Dim tnTreeNodeSub As TreeNode
tnTreeNodeSub=tnTreeNodeRootDirectory.Nodes.Add(objFileInformation.Name)
Catch ex As UnauthorizedAccessException
Continue For 'Ignore the exception and move on
End Try
Next
Модификация к ответу Габриэля Люси:
Try
Dim sAllfiles() As String = Directory.GetFiles(sDirPath, "*.*")
For Each sfile As String In sAllfiles
Try
Dim objFileInformation As FileInfo = New FileInfo(sfile)
Dim tnTreeNodeSub As TreeNode
tnTreeNodeSub=tnTreeNodeRootDirectory.Nodes.Add(objFileInformation.Name)
Catch ex As UnauthorizedAccessException
Continue For 'Ignore the exception and move on
End Try
Next
Catch ex As UnauthorizedAccessException
'Ignore the exception and move on
End Try
Так как это делается следующим образом, добавление еще одного улова поможет, если вы дадите недоступный путь в sDirPath напрямую, если вы не добавите его, закроет ваше приложение.