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 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.
