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 list down all the files available in a directory using C#?
In C#, you can list all files in a directory using the DirectoryInfo class and its GetFiles() method. This approach provides detailed information about each file, including name, size, and other properties.
Syntax
Following is the syntax for creating a DirectoryInfo object and getting files −
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\path\to\directory"); FileInfo[] files = directoryInfo.GetFiles();
You can also specify search patterns and options −
FileInfo[] files = directoryInfo.GetFiles("*.txt", SearchOption.TopDirectoryOnly);
Using DirectoryInfo.GetFiles()
The DirectoryInfo class provides detailed file information and is ideal when you need file properties like size, creation date, or attributes −
using System;
using System.IO;
class Program {
static void Main() {
// Create DirectoryInfo object for current directory
DirectoryInfo mydir = new DirectoryInfo(Directory.GetCurrentDirectory());
// Get all files in the directory
FileInfo[] files = mydir.GetFiles();
Console.WriteLine("Files in directory: " + mydir.FullName);
Console.WriteLine("Total files found: " + files.Length);
Console.WriteLine();
foreach (FileInfo file in files) {
Console.WriteLine("File: {0}, Size: {1} bytes", file.Name, file.Length);
}
}
}
The output of the above code is −
Files in directory: C:\Users\Demo\source\repos\FileListDemo\bin\Debug Total files found: 3 File: FileListDemo.exe, Size: 4608 bytes File: FileListDemo.pdb, Size: 13824 bytes File: FileListDemo.exe.config, Size: 189 bytes
Using Directory.GetFiles() for Simple File Listing
For simpler scenarios where you only need file paths, use the static Directory.GetFiles() method −
using System;
using System.IO;
class Program {
static void Main() {
string currentDirectory = Directory.GetCurrentDirectory();
// Get all file paths as string array
string[] filePaths = Directory.GetFiles(currentDirectory);
Console.WriteLine("Files in current directory:");
foreach (string filePath in filePaths) {
string fileName = Path.GetFileName(filePath);
Console.WriteLine(fileName);
}
}
}
The output of the above code is −
Files in current directory: FileListDemo.exe FileListDemo.pdb FileListDemo.exe.config
Filtering Files by Extension
You can filter files by extension using search patterns −
using System;
using System.IO;
class Program {
static void Main() {
DirectoryInfo mydir = new DirectoryInfo(Directory.GetCurrentDirectory());
// Get only .exe files
FileInfo[] exeFiles = mydir.GetFiles("*.exe");
Console.WriteLine("Executable files:");
foreach (FileInfo file in exeFiles) {
Console.WriteLine("Name: {0}, Created: {1}", file.Name, file.CreationTime.ToShortDateString());
}
// Get all files with multiple extensions
string[] patterns = { "*.exe", "*.dll", "*.config" };
Console.WriteLine("\nSystem files:");
foreach (string pattern in patterns) {
FileInfo[] matchingFiles = mydir.GetFiles(pattern);
foreach (FileInfo file in matchingFiles) {
Console.WriteLine("{0} - {1}", file.Name, file.Extension);
}
}
}
}
The output of the above code is −
Executable files: Name: FileListDemo.exe, Created: 12/15/2023 System files: FileListDemo.exe - .exe FileListDemo.exe.config - .config
Comparison of Methods
| Method | Return Type | Best Use Case |
|---|---|---|
| DirectoryInfo.GetFiles() | FileInfo[] | When you need detailed file properties (size, dates, attributes) |
| Directory.GetFiles() | string[] | When you only need file paths or names |
Conclusion
Use DirectoryInfo.GetFiles() when you need detailed file information, and Directory.GetFiles() for simple file path listings. Both methods support search patterns to filter files by extension or name patterns, making them versatile for various file management tasks.
