Как получить список всех каталогов и подкаталогов по указанному пути, используя 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)

Другие вопросы по тегам