Jedno z možných řešení je napsat jednoduchou rekurzivní funkci, která bude přidávat System.IO.FileInfo do seznamu System.Collections.Generic.List(T). Použití:
Dim files As New List(Of FileInfo)
GetAllFiles("C:\Program Files", files)
Definice rekurzivní funkce:
Public Sub GetAllFiles(ByVal path As String, fileInfosList As List(Of FileInfo))
Try
Dim parentDirectory As New DirectoryInfo(path)
For Each file As FileInfo In parentDirectory.GetFiles()
fileInfosList.Add(file)
Next
For Each directory As DirectoryInfo In parentDirectory.GetDirectories()
GetAllFiles(directory.FullName)
Next
Catch ex As DirectoryNotFoundException
REM Ošetřit případ neexistující složky
Catch ex As FileNotFoundException
Catch ex As UnauthorizedAccessException
REM Ošetřit případ zamítnutí přístupu do složky
End Try
End Sub
Výhoda tohoto řešení je možnost jednoduše přerušit proces prohledávání složek, což v případě Microsoft.VisualBasic.FileIO.FileSystem.GetFiles nelze. To se může hodit při prohledávání složité stromové struktury s velkým množstvím souborů a složek.
|