How to get all the directories and sub directories inside a path in C#?

To get directories in C#, the Directory.GetDirectories method is used. This method returns the names of subdirectories (including their full paths) that match a specified search pattern in a given directory, with options to search subdirectories recursively.

The method allows you to control the search scope using SearchOption enumeration values. The wildcard pattern * matches zero or more characters, enabling flexible directory matching.

Syntax

Following is the basic syntax for Directory.GetDirectories method −

string[] Directory.GetDirectories(string path, string searchPattern, SearchOption searchOption)

Parameters

  • path − The relative or absolute path to the directory to search.

  • searchPattern − The search string to match against the names of directories. Use * to match all directories.

  • searchOption − Specifies whether to search only the current directory or include subdirectories.

SearchOption Values

SearchOption Description
TopDirectoryOnly Searches only the top-level directory
AllDirectories Searches the top-level directory and all subdirectories

Directory Search Options TopDirectoryOnly Root Directory Dir1 Dir2 Only top level AllDirectories Root Directory Dir1 Dir2 Sub1 Sub2 All levels

Using TopDirectoryOnly

This example retrieves only the top-level directories without searching subdirectories −

using System;
using System.IO;

class Program {
    static void Main(string[] args) {
        string rootPath = @"C:\TestFolder";
        
        try {
            string[] dirs = Directory.GetDirectories(rootPath, "*", SearchOption.TopDirectoryOnly);
            
            Console.WriteLine("Top-level directories:");
            foreach (string dir in dirs) {
                Console.WriteLine(dir);
            }
        }
        catch (DirectoryNotFoundException) {
            Console.WriteLine("Directory not found. Please create C:\TestFolder for testing.");
        }
    }
}

The output of the above code is −

Top-level directories:
C:\TestFolder\Documents
C:\TestFolder\Images
C:\TestFolder\Projects

Using AllDirectories

This example searches through all directories and subdirectories recursively −

using System;
using System.IO;

class Program {
    static void Main(string[] args) {
        string rootPath = @"C:\TestFolder";
        
        try {
            string[] dirs = Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories);
            
            Console.WriteLine("All directories and subdirectories:");
            foreach (string dir in dirs) {
                Console.WriteLine(dir);
            }
        }
        catch (DirectoryNotFoundException) {
            Console.WriteLine("Directory not found. Please create C:\TestFolder for testing.");
        }
    }
}

The output of the above code is −

All directories and subdirectories:
C:\TestFolder\Documents
C:\TestFolder\Images
C:\TestFolder\Projects
C:\TestFolder\Documents\Reports
C:\TestFolder\Documents\Backup
C:\TestFolder\Projects\WebApp

Using Specific Search Patterns

You can also search for directories matching specific patterns −

using System;
using System.IO;

class Program {
    static void Main(string[] args) {
        string rootPath = @"C:\TestFolder";
        
        try {
            // Search for directories starting with "Pro"
            string[] dirs = Directory.GetDirectories(rootPath, "Pro*", SearchOption.AllDirectories);
            
            Console.WriteLine("Directories starting with 'Pro':");
            foreach (string dir in dirs) {
                Console.WriteLine(Path.GetFileName(dir) + " - " + dir);
            }
        }
        catch (DirectoryNotFoundException) {
            Console.WriteLine("Directory not found. Please create C:\TestFolder for testing.");
        }
    }
}

The output of the above code is −

Directories starting with 'Pro':
Projects - C:\TestFolder\Projects

Conclusion

The Directory.GetDirectories method provides flexible directory enumeration with options for recursive searching and pattern matching. Use SearchOption.TopDirectoryOnly for shallow searches and SearchOption.AllDirectories for comprehensive directory traversal including all subdirectories.

Updated on: 2026-03-17T07:04:36+05:30

26K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements