Dùng Directory.GetDirectories đệ quy hoặc GetFiles với SearchOption.AllDirectories.
string path = @"d:/New/Myfile"; string[] dirs = Directory.GetDirectories(path, "xml", SearchOption.AllDirectories); Console.WriteLine(dirs.Length); foreach (string d in dirs) Console.WriteLine(d);
Các cách tìm file
1. Directory.GetFiles (đơn giản nhất)
// Tìm file *.txt trong thư mục và subfolder string[] files = Directory.GetFiles(@"C:\Data", "*.txt", SearchOption.AllDirectories);
2. Directory.EnumerateFiles (lazy, tiết kiệm memory)
foreach (string file in Directory.EnumerateFiles(@"C:\Data", "*.txt", SearchOption.AllDirectories))
Console.WriteLine(file);
3. DirectoryInfo (object-oriented)
var dir = new DirectoryInfo(@"C:\Data");
foreach (var file in dir.GetFiles("*.txt", SearchOption.AllDirectories))
Console.WriteLine(file.FullName);
4. Tìm theo pattern phức tạp
var files = Directory.GetFiles(path, "*", SearchOption.AllDirectories)
.Where(f => f.EndsWith(".log") || f.EndsWith(".txt"))
.ToList();
Lưu ý: Cần try-catch cho UnauthorizedAccessException khi duyệt system folders.