C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Stack: It uses Stack to build up a list of paths it needs to process. It then processes each directory path in the stack, adding all the files each time.
StackMain: The Main sub here shows how to call FileHelper.GetFilesRecursive and specify a path string.
Tip: The path string must specify an absolute path, or one relative to the program. Here, we specify a C:\ path on my computer.
VB.NET program that recurses directories
Imports System.IO
''' <summary>
''' This class contains directory helper method(s).
''' </summary>
Public Class FileHelper
''' <summary>
''' This method starts at the specified directory.
''' It traverses all subdirectories.
''' It returns a List of those directories.
''' </summary>
Public Shared Function GetFilesRecursive(ByVal initial As String) As List(Of String)
' This list stores the results.
Dim result As New List(Of String)
' This stack stores the directories to process.
Dim stack As New Stack(Of String)
' Add the initial directory
stack.Push(initial)
' Continue processing for each stacked directory
Do While (stack.Count > 0)
' Get top directory string
Dim dir As String = stack.Pop
Try
' Add all immediate file paths
result.AddRange(Directory.GetFiles(dir, "*.*"))
' Loop through all subdirectories and add them to the stack.
Dim directoryName As String
For Each directoryName In Directory.GetDirectories(dir)
stack.Push(directoryName)
Next
Catch ex As Exception
End Try
Loop
' Return the list
Return result
End Function
End Class
Module Module1
''' <summary>
''' Entry point that shows usage of recursive directory function.
''' </summary>
Sub Main()
' Get recursive List of all files starting in this directory.
Dim list As List(Of String) = FileHelper.GetFilesRecursive("C:\Users\Sam\Documents\Perls")
' Loop through and display each path.
For Each path In list
Console.WriteLine(path)
Next
' Write total number of paths found.
Console.WriteLine(list.Count)
End Sub
End Module
Note: I checked the directory in Windows Explorer by right-clicking on the folder and selecting Properties.
And: The dialog shows that there are 677 files in the folder. Further inspection shows all file paths are accurate.
Example output
C:\Users\Sam\Documents\Perls\Category1.txt
...
C:\Users\Sam\Documents\Perls\Style\all.css
...
C:\Users\Sam\Documents\Perls\Main\2D-Array-IEnumerable.html
...
677
Review: It demonstrates an excellent use of Stack and List. It is highly useful in many projects.
List