DirectoryInfo.EnumerateFiles Метод

Определение

Возвращает перечисляемую коллекцию сведений о файлах в текущем каталоге.

Перегрузки

EnumerateFiles()

Возвращает перечисляемую коллекцию сведений о файлах в текущем каталоге.

EnumerateFiles(String)

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую шаблону поиска.

EnumerateFiles(String, EnumerationOptions)

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую указанному шаблону поиска и параметрам перечисления.

EnumerateFiles(String, SearchOption)

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую указанному шаблону поиска и параметру поиска в подкаталогах.

EnumerateFiles()

Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs

Возвращает перечисляемую коллекцию сведений о файлах в текущем каталоге.

public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles ();

Возвращаемое значение

Перечисляемая коллекция файлов в текущем каталоге.

Исключения

Путь, содержащийся в объекте DirectoryInfo , является недействительным (например, он ведет на несопоставленный диск).

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере перечисляются файлы в указанном каталоге и используется запрос LINQ для возврата имен всех файлов, созданных до 2009 года, путем проверки значения CreationTimeUtc свойства .

Если вам нужны только имена файлов, используйте статический Directory класс для повышения производительности. Пример см. в методе Directory.EnumerateFiles(String) .

// Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library\");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009.
var files = from f in DirInfo.EnumerateFiles()
           where f.CreationTimeUtc < StartOf2009
           select f;

// Show results.
foreach (var f in files)
{
    Console.WriteLine("{0}", f.Name);
}

В следующем примере показано, как перечислить файлы в каталоге с помощью различных параметров поиска. В примере предполагается каталог с файлами с именами log1.txt, log2.txt, test1.txt, test2.txt, test3.txt и подкаталог с именем SubFile.txt.

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

Комментарии

Методы EnumerateFiles и GetFiles отличаются следующим образом:

  • При использовании EnumerateFilesможно начать перечисление коллекции FileInfo объектов до возвращения всей коллекции.

  • При использовании GetFilesнеобходимо дождаться возвращения всего массива FileInfo объектов, прежде чем получить доступ к массиву.

Таким образом, при работе с большим количеством файлов и каталогов EnumerateFiles может быть более эффективным.

Этот метод предварительно заполняет значения следующих FileInfo свойств:

Возвращаемая коллекция не кэшируется; Каждый вызов метода в GetEnumerator коллекции будет запускать новое перечисление.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

EnumerateFiles(String)

Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую шаблону поиска.

public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

Возвращаемое значение

Перечисляемая коллекция файлов, соответствующая параметру searchPattern.

Исключения

searchPattern имеет значение null.

Путь, содержащийся в объекте DirectoryInfo, является недействительным (например,он ведет на несопоставленный диск).

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере показано, как перечислить файлы в каталоге с помощью различных параметров поиска. В примере предполагается каталог с файлами с именами log1.txt, log2.txt, test1.txt, test2.txt, test3.txt и подкаталог с именем SubFile.txt.

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

Комментарии

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ноль или один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, строка "*t" ищет все имена, заканчивающиеся буквой "t". ". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

Методы EnumerateFiles и GetFiles отличаются следующим образом:

  • При использовании EnumerateFilesможно начать перечисление коллекции FileInfo объектов до возвращения всей коллекции.

  • При использовании GetFilesнеобходимо дождаться возвращения всего массива FileInfo объектов, прежде чем получить доступ к массиву.

Таким образом, при работе с большим количеством файлов и каталогов EnumerateFiles может быть более эффективным.

Этот метод предварительно заполняет значения следующих FileInfo свойств:

Возвращаемая коллекция не кэшируется; Каждый вызов метода в GetEnumerator коллекции будет запускать новое перечисление.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

EnumerateFiles(String, EnumerationOptions)

Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую указанному шаблону поиска и параметрам перечисления.

public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

enumerationOptions
EnumerationOptions

Объект, описывающий конфигурацию поиска и перечисления для использования.

Возвращаемое значение

Перечисляемая коллекция файлов, соответствующая параметру searchPattern и enumerationOptions.

Исключения

searchPattern имеет значение null.

Путь, содержащийся в объекте DirectoryInfo, является недействительным (например,он ведет на несопоставленный диск).

У вызывающего объекта отсутствует необходимое разрешение.

Комментарии

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ноль или один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, строка "*t" ищет все имена, заканчивающиеся буквой "t". ". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

Методы EnumerateFiles и GetFiles отличаются следующим образом:

  • При использовании EnumerateFilesможно начать перечисление коллекции FileInfo объектов до возвращения всей коллекции.

  • При использовании GetFilesнеобходимо дождаться возвращения всего массива FileInfo объектов, прежде чем получить доступ к массиву.

Таким образом, при работе с большим количеством файлов и каталогов EnumerateFiles может быть более эффективным.

Этот метод предварительно заполняет значения следующих FileInfo свойств:

Возвращаемая коллекция не кэшируется; Каждый вызов метода в GetEnumerator коллекции будет запускать новое перечисление.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

EnumerateFiles(String, SearchOption)

Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs
Исходный код:
DirectoryInfo.cs

Возвращает перечисляемую коллекцию сведений о файлах, соответствующую указанному шаблону поиска и параметру поиска в подкаталогах.

public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern, System.IO.SearchOption searchOption);

Параметры

searchPattern
String

Строка поиска, которая будет сравниваться с именами файлов. Этот параметр может содержать сочетание допустимого литерального пути и подстановочного символа (* и ?), но не поддерживает регулярные выражения.

searchOption
SearchOption

Одно из значений перечисления, определяющее, следует ли выполнять поиск только в текущем каталоге или также во всех его подкаталогах. Значение по умолчанию — TopDirectoryOnly.

Возвращаемое значение

Перечисляемая коллекция файлов, соответствующая параметру searchPattern и searchOption.

Исключения

searchPattern имеет значение null.

searchOption не является допустимым значением SearchOption.

Путь, содержащийся в объекте DirectoryInfo , является недействительным (например, он ведет на несопоставленный диск).

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере показано, как перечислить файлы в каталоге с помощью различных параметров поиска. В примере предполагается каталог с файлами с именами log1.txt, log2.txt, test1.txt, test2.txt, test3.txt и подкаталог с именем SubFile.txt.

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/

Комментарии

searchPattern может быть сочетанием литеральных и подстановочных знаков, но не поддерживает регулярные выражения. Следующие описатели с подстановочными знаками разрешены в searchPattern.

Описатель подстановочных знаков Соответствует
* (звездочка) Ноль или более символов в этой позиции.
? (вопросительный знак) Ноль или один символ в этой позиции.

Символы, отличные от подстановочного знака, являются литеральными символами. Например, строка "*t" ищет все имена, заканчивающиеся буквой "t". ". Строка searchPattern "s*" ищет все имена, path начинающиеся с буквы "s".

Методы EnumerateFiles и GetFiles отличаются следующим образом:

  • При использовании EnumerateFilesможно начать перечисление коллекции FileInfo объектов до возвращения всей коллекции.

  • При использовании GetFilesнеобходимо дождаться возвращения всего массива FileInfo объектов, прежде чем получить доступ к массиву.

Таким образом, при работе с большим количеством файлов и каталогов EnumerateFiles может быть более эффективным.

Этот метод предварительно заполняет значения следующих FileInfo свойств:

Возвращаемая коллекция не кэшируется; Каждый вызов метода в GetEnumerator коллекции будет запускать новое перечисление.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0