Как получить список всех каталогов и подкаталогов по указанному пути, используя vb.net
Моя структура каталогов, как показано ниже.
Родительский каталог
--- Подкаталог 1
--- Подкаталог 2
------ Подкаталог 2a
------ Подкаталог 2b
--- Подкаталог 3
Я пишу на VB.net, чтобы получить все имена каталогов (включая подкаталоги на всех уровнях)
Однако при использовании directory.getfilesystementries(path) я получаю только подкаталоги верхнего уровня. Любая идея о том, как получить все имена подкаталогов всех подуровней?
4 ответа
Просто используйте что-то вроде этого:
Dim result = System.IO.Directory.EnumerateDirectories(path, "*", System.IO.SearchOption.AllDirectories)
трюк это SearchOption.AllDirectories
Кстати: вы можете сделать то же самое с вашим методом GetFileSystemEntries
Dim di As New DirectoryInfo(FolderName)
di = New DirectoryInfo(path)
rgFiles = di.GetFiles("*.*", IO.SearchOption.AllDirectories)
For Each fi As FileInfo In rgFiles
If CheckIfExist(fi.FullName.ToString.Replace("\" & fi.Name, "")) = False Then
ListBox1.Items.Add(fi.FullName.ToString.Replace("\" & fi.Name, ""))
End If
Next
Public Function CheckIfExist(ByRef Path As String) As Boolean
Dim RetVal As Boolean = False
For Each LI As String In ListBox1.Items
If LI.ToString = Path Then
RetVal = True
Return RetVal
Exit Function
End If
Next
Return RetVal
End Function
Объект Directoryinfo может предоставить любую информацию о каталоге, включая каталоги / файлы и даже системные файлы.
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim dir As New DirectoryInfo("C:\")
For Each dirItem As DirectoryInfo In dir.GetDirectories
MsgBox(dirItem.Name)
Next
End Sub
Вам необходимо использовать перегруженную версию Directory.GetFileSystemEntries, которая указывает, следует ли искать в подкаталогах:
Dim allDirectories As String() = Directory.GetFileSystemEntries("path", "*", SearchOption.AllDirectories)
Метод Directory.GetFileSystemEntries (String, String, SearchOption)