How to find the file using C#?

Use the Directory.GetFiles and Directory.GetDirectories methods in C# to search for files in a directory structure. These methods provide powerful options to recursively search through subdirectories and apply search patterns.

Syntax

Following is the syntax for finding files using Directory.GetFiles

string[] files = Directory.GetFiles(path, searchPattern, SearchOption.AllDirectories);

Following is the syntax for finding directories using Directory.GetDirectories

string[] directories = Directory.GetDirectories(path, searchPattern, SearchOption.AllDirectories);

Parameters

  • path − The directory path to search in
  • searchPattern − The search string to match file/folder names (supports wildcards like * and ?)
  • SearchOption − Specifies whether to search current directory only or include subdirectories

Using Directory.GetFiles to Find Files

Example - Finding Files with Specific Extension

using System;
using System.IO;

class Program {
   public static void Main() {
      // Create sample directory structure and files
      string basePath = @"C:\temp\TestFiles";
      Directory.CreateDirectory(basePath);
      Directory.CreateDirectory(Path.Combine(basePath, "SubFolder"));
      
      File.WriteAllText(Path.Combine(basePath, "file1.txt"), "content");
      File.WriteAllText(Path.Combine(basePath, "file2.xml"), "xml content");
      File.WriteAllText(Path.Combine(basePath, "SubFolder", "file3.txt"), "content");
      
      // Find all .txt files recursively
      string[] txtFiles = Directory.GetFiles(basePath, "*.txt", SearchOption.AllDirectories);
      
      Console.WriteLine("Found " + txtFiles.Length + " .txt files:");
      foreach (string file in txtFiles) {
         Console.WriteLine(file);
      }
      
      // Clean up
      Directory.Delete(basePath, true);
   }
}

The output of the above code is −

Found 2 .txt files:
C:\temp\TestFiles\file1.txt
C:\temp\TestFiles\SubFolder\file3.txt

Using Directory.GetDirectories to Find Folders

Example - Finding Directories with Pattern

using System;
using System.IO;

class Program {
   public static void Main() {
      // Create sample directory structure
      string basePath = @"C:\temp\TestDirs";
      Directory.CreateDirectory(basePath);
      Directory.CreateDirectory(Path.Combine(basePath, "xml_data"));
      Directory.CreateDirectory(Path.Combine(basePath, "json_data"));
      Directory.CreateDirectory(Path.Combine(basePath, "temp"));
      Directory.CreateDirectory(Path.Combine(basePath, "xml_data", "backup"));
      
      // Find directories containing "xml"
      string[] xmlDirs = Directory.GetDirectories(basePath, "*xml*", SearchOption.AllDirectories);
      
      Console.WriteLine("Found " + xmlDirs.Length + " directories containing 'xml':");
      foreach (string dir in xmlDirs) {
         Console.WriteLine(dir);
      }
      
      // Clean up
      Directory.Delete(basePath, true);
   }
}

The output of the above code is −

Found 1 directories containing 'xml':
C:\temp\TestDirs\xml_data

Using File.Exists to Check File Existence

Example - Checking if Specific File Exists

using System;
using System.IO;

class Program {
   public static void Main() {
      string filePath = @"C:\temp\sample.txt";
      
      // Create a sample file
      Directory.CreateDirectory(@"C:\temp");
      File.WriteAllText(filePath, "Sample content");
      
      // Check if file exists
      if (File.Exists(filePath)) {
         Console.WriteLine("File found: " + filePath);
         Console.WriteLine("File size: " + new FileInfo(filePath).Length + " bytes");
      } else {
         Console.WriteLine("File not found: " + filePath);
      }
      
      // Clean up
      File.Delete(filePath);
      Directory.Delete(@"C:\temp");
   }
}

The output of the above code is −

File found: C:\temp\sample.txt
File size: 14 bytes

SearchOption Values

SearchOption Description
TopDirectoryOnly Search only in the specified directory, not subdirectories
AllDirectories Search in the specified directory and all subdirectories

Conclusion

Use Directory.GetFiles to find files and Directory.GetDirectories to find folders in C#. Both methods support search patterns with wildcards and can search recursively through subdirectories using SearchOption.AllDirectories. For checking specific file existence, use File.Exists.

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

185 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements