Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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 |
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.
