sharkyenergy
sharkyenergy

Reputation: 4173

List all folders that are in any 3rd subdirectory from current

I would need to make an array list, displaying all folders that are in the 3rd subfolder from the current one.

Folder1/sub1folder/sub2folder/sub3folder

It has to be recursive. what I need is an array of strings that contains all the strings like above. I do know how to look recursively into folders, but I do not know how to limit the search to the 3rd subfolder.

Thanks!

Upvotes: 0

Views: 126

Answers (2)

Xavier Peña
Xavier Peña

Reputation: 7899

Here's my stab at it. I tested it and it works for me:

Dim resultList as List(Of String) = DirectorySearch(baseDirectoryPath, 0)

Function DirectorySearch(directoryPath As String, level As Integer) As List(Of String)

    level += 1

    Dim directories As String() = IO.Directory.GetDirectories(directoryPath)

    Dim resultList As New List(Of String)

    If level = 3 Then
        For Each subDirectoryPath In directories
            Dim result As String = GetFinalResult(subDirectoryPath)
            resultList.Add(result)
        Next
    Else
        For Each subDirectoryPath In directories
            Dim partialResultList As List(Of String) = DirectorySearch(subDirectoryPath, level)
            resultList.AddRange(partialResultList)
        Next
    End If

    Return resultList

End Function

Private Function GetFinalResult(directoryPath As String) As String
    Dim directoryInfo As New IO.DirectoryInfo(directoryPath)
    Return String.Format("{0}/{1}/{2}/{3}",
                         directoryInfo.Parent.Parent.Parent.Name,
                         directoryInfo.Parent.Parent.Name,
                         directoryInfo.Parent.Name,
                         directoryInfo.Name)
End Function

Upvotes: 1

Wibbler
Wibbler

Reputation: 1045

If you had a recursive function which began at the current folder:

Public Function recurse(Optional depth As Integer = 0) As String()
  Dim folderList As String()
  If (depth < 3) Then
    depth += 1
    folderList = recurse(depth)
  Else
    'Do third subfolder analysis and set the output to folderList
    Return folderList
  End If
End Sub

Upvotes: 1

Related Questions