DirectoryInfo.EnumerateFiles Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает перечисленную коллекцию сведений о файле в текущем каталоге.
Перегрузки
| Имя | Описание |
|---|---|
| EnumerateFiles() |
Возвращает перечисленную коллекцию сведений о файле в текущем каталоге. |
| EnumerateFiles(String) |
Возвращает перечисленную коллекцию сведений о файле, которая соответствует шаблону поиска. |
| EnumerateFiles(String, EnumerationOptions) |
Возвращает перечисляемую коллекцию сведений о файле, соответствующую указанному шаблону поиска и параметрам перечисления. |
| EnumerateFiles(String, SearchOption) |
Возвращает перечисленную коллекцию сведений о файле, которая соответствует указанному шаблону поиска и параметру подкаталога поиска. |
EnumerateFiles()
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
Возвращает перечисленную коллекцию сведений о файле в текущем каталоге.
public:
System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles();
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles();
member this.EnumerateFiles : unit -> seq<System.IO.FileInfo>
Public Function EnumerateFiles () As IEnumerable(Of FileInfo)
Возвращаемое значение
Перечисленная коллекция файлов в текущем каталоге.
Исключения
Путь, инкапсулированный в 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);
}
// Create a DirectoryInfo of the directory of the files to enumerate.
let dirInfo = DirectoryInfo @"\archives1\library\"
let startOf2009 = DateTime(2009, 01, 01)
// LINQ query for all files created before 2009.
let files =
query {
for f in dirInfo.EnumerateFiles() do
where (f.CreationTime < startOf2009)
select f
}
// Show results.
for f in files do
printfn $"{f.Name}"
' Create a DirectoryInfo of the directory of the files to enumerate.
Dim DirInfo As New DirectoryInfo("\\archives1\library\")
Dim StartOf2009 As New DateTime(2009, 1, 1)
' LINQ query for all files created before 2009.
Dim files = From f In DirInfo.EnumerateFiles()
Where f.CreationTimeUtc < StartOf2009
' Show results.
For Each f As FileInfo In files
Console.WriteLine("{0}", f.Name)
Next
В следующем примере показано, как перечислить файлы в каталоге с помощью различных параметров поиска. В примере предполагается каталог с файлами с именем 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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\ExampleDir"
printfn "No search pattern returns:"
for fi in di.EnumerateFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.EnumerateFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.EnumerateFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.EnumerateFiles("*", SearchOption.AllDirectories) do
printfn $"{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 . . .
*)
Imports System.IO
Module Module1
Sub Main()
Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
Console.WriteLine("No search pattern returns:")
For Each fi In di.EnumerateFiles()
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern *2* returns:")
For Each fi In di.EnumerateFiles("*2*")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern test?.txt returns:")
For Each fi In di.EnumerateFiles("test?.txt")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern AllDirectories returns:")
For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
Console.WriteLine(fi.Name)
Next
End Sub
End Module
' 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 метода в коллекции запустит новое перечисление.
Применяется к
EnumerateFiles(String)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
Возвращает перечисленную коллекцию сведений о файле, которая соответствует шаблону поиска.
public:
System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles(System::String ^ searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles(string searchPattern);
member this.EnumerateFiles : string -> seq<System.IO.FileInfo>
Public Function EnumerateFiles (searchPattern As String) As IEnumerable(Of FileInfo)
Параметры
- 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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\ExampleDir"
printfn "No search pattern returns:"
for fi in di.EnumerateFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.EnumerateFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.EnumerateFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.EnumerateFiles("*", SearchOption.AllDirectories) do
printfn $"{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 . . .
*)
Imports System.IO
Module Module1
Sub Main()
Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
Console.WriteLine("No search pattern returns:")
For Each fi In di.EnumerateFiles()
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern *2* returns:")
For Each fi In di.EnumerateFiles("*2*")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern test?.txt returns:")
For Each fi In di.EnumerateFiles("test?.txt")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern AllDirectories returns:")
For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
Console.WriteLine(fi.Name)
Next
End Sub
End Module
' 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 метода в коллекции запустит новое перечисление.
Применяется к
EnumerateFiles(String, EnumerationOptions)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
Возвращает перечисляемую коллекцию сведений о файле, соответствующую указанному шаблону поиска и параметрам перечисления.
public:
System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles(string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.EnumerateFiles : string * System.IO.EnumerationOptions -> seq<System.IO.FileInfo>
Public Function EnumerateFiles (searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of FileInfo)
Параметры
- 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 метода в коллекции запустит новое перечисление.
Применяется к
EnumerateFiles(String, SearchOption)
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
- Исходный код:
- DirectoryInfo.cs
Возвращает перечисленную коллекцию сведений о файле, которая соответствует указанному шаблону поиска и параметру подкаталога поиска.
public:
System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles(string searchPattern, System.IO.SearchOption searchOption);
member this.EnumerateFiles : string * System.IO.SearchOption -> seq<System.IO.FileInfo>
Public Function EnumerateFiles (searchPattern As String, searchOption As SearchOption) As IEnumerable(Of FileInfo)
Параметры
- 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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\ExampleDir"
printfn "No search pattern returns:"
for fi in di.EnumerateFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.EnumerateFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.EnumerateFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.EnumerateFiles("*", SearchOption.AllDirectories) do
printfn $"{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 . . .
*)
Imports System.IO
Module Module1
Sub Main()
Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
Console.WriteLine("No search pattern returns:")
For Each fi In di.EnumerateFiles()
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern *2* returns:")
For Each fi In di.EnumerateFiles("*2*")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern test?.txt returns:")
For Each fi In di.EnumerateFiles("test?.txt")
Console.WriteLine(fi.Name)
Next
Console.WriteLine()
Console.WriteLine("Search pattern AllDirectories returns:")
For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
Console.WriteLine(fi.Name)
Next
End Sub
End Module
' 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 метода в коллекции запустит новое перечисление.