Thanks to the GetDirectories and GetFiles methods of the System.IO.Directory class, you need very little code to iterate over all the directories and files of a directory tree. For example, the following code snippet prints the structure of a directory tree and (optionally) the name of files in each directory:
' Assumes the following imports:' Imports System.IOSub PrintDirTree(ByVal dir As String, ByVal showFiles As Boolean, _ Optional ByVal level As Integer = 0) Dim subdir As String Dim fname As String ' Display the name of this directory with correct indentation. Console.WriteLine(New String("-"c, level * 2) & dir) Try ' Display all files in this directory, with correct indentation. If showFiles Then For Each fname In Directory.GetFiles(dir) Console.WriteLine(New String(" "c, level * 2 + 2) & fname) Next End If ' A recursive call for all the subdirectories in this directory. For Each subdir In Directory.GetDirectories(dir) PrintDirTree(subdir, showFiles, level + 1) Next Catch ' Do nothing if any error (presumably "Drive not ready"). End TryEnd Sub
You can pass a directory name to the PrintDirTree procedure, or print the directory tree of all the drives in your system, by using this code:
Dim rootDir As StringFor Each rootDir In Directory.GetLogicalDrives PrintDirTree(rootDir, True)Next