2017-04-18 48 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將包含來自可訪問目錄的所有文件。