C# Program to Search Sub-Directory in a Given Directory

Searching for sub-directories in a given directory is a common task in many applications. In C#, we can use the Directory and DirectoryInfo classes provided by the System.IO namespace to perform this task. In this article, we will explore how to write a C# program to search for sub-directories in a given directory.

Syntax

Following is the syntax for using DirectoryInfo.GetDirectories() method

DirectoryInfo directoryInfo = new DirectoryInfo(path);
DirectoryInfo[] subdirectories = directoryInfo.GetDirectories();

Following is the syntax for using Directory.GetDirectories() method

string[] subdirectories = Directory.GetDirectories(path);

Using DirectoryInfo.GetDirectories()

The DirectoryInfo.GetDirectories() method returns an array of DirectoryInfo objects that represent the directories within a specified directory. This approach provides more detailed information about each subdirectory

DirectoryInfo Approach Parent Directory C:\MyFolder scan Subfolder1 Subfolder2 Subfolder3 Returns DirectoryInfo[] with full details (Name, FullName, CreationTime, etc.)

Example

using System;
using System.IO;

class Program {
   static void Main() {
      string path = @"C:";
      try {
         DirectoryInfo directory = new DirectoryInfo(path);
         
         DirectoryInfo[] subdirectories = directory.GetDirectories();
         
         Console.WriteLine($"Subdirectories in {path}:");
         foreach (DirectoryInfo subdirectory in subdirectories) {
            Console.WriteLine($"Name: {subdirectory.Name}");
            Console.WriteLine($"Full Path: {subdirectory.FullName}");
            Console.WriteLine($"Created: {subdirectory.CreationTime}");
            Console.WriteLine("---");
         }
         
         Console.WriteLine($"Total subdirectories found: {subdirectories.Length}");
      }
      catch (Exception ex) {
         Console.WriteLine($"Error: {ex.Message}");
      }
   }
}

The output of the above code is

Subdirectories in C:\:
Name: Program Files
Full Path: C:\Program Files
Created: 7/13/2009 10:20:08 PM
---
Name: Users
Full Path: C:\Users
Created: 7/14/2009 4:20:09 AM
---
Name: Windows
Full Path: C:\Windows
Created: 7/13/2009 10:20:08 PM
---
Total subdirectories found: 3

Using Directory.GetDirectories()

The Directory.GetDirectories() method returns an array of strings that represent the full paths of the subdirectories. This is a simpler approach when you only need the directory names

Example

using System;
using System.IO;

class Program {
   static void Main() {
      string path = @"C:";
      try {
         string[] subdirectories = Directory.GetDirectories(path);
         
         Console.WriteLine($"Subdirectories in {path}:");
         foreach (string subdirectory in subdirectories) {
            Console.WriteLine(subdirectory);
         }
         
         Console.WriteLine($"Total subdirectories found: {subdirectories.Length}");
      }
      catch (Exception ex) {
         Console.WriteLine($"Error: {ex.Message}");
      }
   }
}

The output of the above code is

Subdirectories in C:\:
C:\Program Files
C:\Users
C:\Windows
Total subdirectories found: 3

Searching with Patterns

Both methods support search patterns to filter results. Here's an example using wildcards

Example

using System;
using System.IO;

class Program {
   static void Main() {
      string path = @"C:";
      try {
         // Search for directories starting with 'P'
         string[] subdirectories = Directory.GetDirectories(path, "P*");
         
         Console.WriteLine("Directories starting with 'P':");
         foreach (string subdirectory in subdirectories) {
            Console.WriteLine(subdirectory);
         }
      }
      catch (Exception ex) {
         Console.WriteLine($"Error: {ex.Message}");
      }
   }
}

The output of the above code is

Directories starting with 'P':
C:\Program Files

Comparison

DirectoryInfo.GetDirectories() Directory.GetDirectories()
Returns DirectoryInfo[] objects Returns string[] paths
Provides detailed directory information Simple string paths only
Object-oriented approach Static method approach
Better for complex operations Better for simple path listing

Conclusion

Both DirectoryInfo.GetDirectories() and Directory.GetDirectories() methods are effective for searching subdirectories in C#. Use DirectoryInfo when you need detailed information about directories, and Directory for simple path retrieval. Both methods support search patterns and provide essential functionality for file system operations.

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

672 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements