Display a directory tree

Display a directory tree

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


Share the Post: