Метод GetFiles
Directory.GetFiles возвращает
string[]. Маска "*.txt"
отбирает файлы по шаблону. По умолчанию
подпапки не обходят - для этого нужен
SearchOption.AllDirectories.
Ленивый обход -
EnumerateFiles.
Есть GetFilesAsync.
Синтаксис
string[] paths = Directory.GetFiles(path);
string[] paths = Directory.GetFiles(path, "*.txt");
string[] paths = Directory.GetFiles(
path, "*", SearchOption.AllDirectories);
Пример
Давайте получим все файлы в abcde:
using System;
using System.IO;
class Program
{
static void Main()
{
Directory.CreateDirectory("abcde");
File.WriteAllText("abcde/12345.txt", "12345");
File.WriteAllText("abcde/67890.dat", "67890");
string[] res = Directory.GetFiles("abcde");
Console.WriteLine(res.Length);
Directory.Delete("abcde", true);
}
}
Результат выполнения кода:
2
Пример
Давайте отфильтруем только "*.txt":
using System;
using System.IO;
class Program
{
static void Main()
{
Directory.CreateDirectory("abcde");
File.WriteAllText("abcde/12345.txt", "12345");
File.WriteAllText("abcde/67890.dat", "67890");
string[] res = Directory.GetFiles("abcde", "*.txt");
Console.WriteLine(res.Length);
Directory.Delete("abcde", true);
}
}
Результат выполнения кода:
1
Пример
Давайте убедимся, что без
AllDirectories файл во вложенной
папке не попадает в список:
using System;
using System.IO;
class Program
{
static void Main()
{
Directory.CreateDirectory("abcde/nested");
File.WriteAllText("abcde/nested/12345.txt", "12345");
File.WriteAllText("abcde/12345.txt", "12345");
string[] res = Directory.GetFiles("abcde");
Console.WriteLine(res.Length);
Directory.Delete("abcde", true);
}
}
Результат выполнения кода:
1
Смотрите также
-
метод
EnumerateFiles,
который обходит файлы лениво -
метод
GetDirectories,
который возвращает подпапки -
метод
GetFileSystemEntries,
который возвращает файлы и папки вместе -
File,
которым создают файлы для списка