2017-04-18 65 views
1

我试图搜索PC中的文件..问题是某些目录无法访问。 我想要的是忽略这样的目录并继续搜索。 尝试抓住不这样做。搜索文件忽略访问被拒绝的错误

这里是我试图用搜索的方式:

Directory.GetFiles("C:\", "*.*", SearchOption.AllDirectories) 

是否有这么操作成功完成任何错误,忽略搜索的好方法?

回答

1

既然你有目录不能被访问,你将不得不自己遍历文件系统这是一个简单的方法,将这样做。

Private Sub ProcessDirectory(sDirectory As String, fileList As List(Of String)) 

    Try 
     Dim files As String() = System.IO.Directory.GetFiles(sDirectory) 
     fileList.AddRange(files) 
     Dim directories As String() = System.IO.Directory.GetDirectories(sDirectory) 
     For Each direct As String In directories 
      ProcessDirectory(direct, fileList) 
     Next 
    Catch ex As Exception 

    End Try 

End Sub 

使用

Dim fileList As List(Of String) = New List(Of String)() 

ProcessDirectory("C:\", fileList) 

取决于许多文件是如何驱动器上,这可能需要一些时间。在调用ProcessDirectory之后,fileList Collection将包含来自可访问目录的所有文件。