Sdílet prostřednictvím


DirectoryInfo.EnumerateFiles Metoda

Definice

Vrátí výčtovou kolekci informací o souboru v aktuálním adresáři.

Přetížení

EnumerateFiles()

Vrátí výčtovou kolekci informací o souboru v aktuálním adresáři.

EnumerateFiles(String)

Vrátí výčtovou kolekci informací o souboru, která odpovídá vzoru hledání.

EnumerateFiles(String, EnumerationOptions)

Vrátí výčtovou kolekci informací o souboru, která odpovídá zadanému vzoru hledání a možnostem výčtu.

EnumerateFiles(String, SearchOption)

Vrátí výčtovou kolekci informací o souborech, která odpovídá zadanému vzoru hledání a možnosti podadresáře hledání.

EnumerateFiles()

Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs

Vrátí výčtovou kolekci informací o souboru v aktuálním adresáři.

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)

Návraty

Výčet kolekce souborů v aktuálním adresáři.

Výjimky

Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).

Volající nemá požadované oprávnění.

Příklady

Následující příklad vytvoří výčet souborů v zadaném adresáři a pomocí dotazu LINQ vrátí názvy všech souborů, které byly vytvořeny před 2009 kontrolou hodnoty CreationTimeUtc vlastnosti.

Pokud potřebujete jenom názvy souborů, použijte statickou Directory třídu pro lepší výkon. Příklad najdete v Directory.EnumerateFiles(String) metodě .

// 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

Následující příklad ukazuje, jak vytvořit výčet souborů v adresáři pomocí různých možností hledání. Příklad předpokládá adresář, který obsahuje soubory s názvem log1.txt, log2.txt, test1.txt, test2.txt, test3.txt, a podadresář se souborem s názvem 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 . . .

Poznámky

Metody EnumerateFiles a GetFiles se liší takto:

  • Při použití příkazu EnumerateFilesmůžete zahájit výčet kolekce FileInfo objektů před vrácením celé kolekce.

  • Pokud použijete GetFiles, musíte počkat na vrácení celé pole FileInfo objektů, abyste mohli získat přístup k matici.

Proto při práci s mnoha soubory a adresáři EnumerateFiles může být efektivnější.

Tato metoda předem naplní hodnoty následujících FileInfo vlastností:

Vrácená kolekce není uložena do mezipaměti; každé volání GetEnumerator metody v kolekci spustí nový výčet.

Platí pro

EnumerateFiles(String)

Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs

Vrátí výčtovou kolekci informací o souboru, která odpovídá vzoru hledání.

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)

Parametry

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy souborů. Tento parametr může obsahovat kombinaci platných literálových cest a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.

Návraty

Výčetná kolekce souborů, která odpovídá searchPattern.

Výjimky

searchPattern je null.

Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).

Volající nemá požadované oprávnění.

Příklady

Následující příklad ukazuje, jak vytvořit výčet souborů v adresáři pomocí různých možností hledání. Příklad předpokládá adresář, který obsahuje soubory s názvem log1.txt, log2.txt, test1.txt, test2.txt, test3.txt, a podadresář se souborem s názvem 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 . . .

Poznámky

searchPattern může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) V této pozici není žádný nebo jeden znak.

Jiné znaky než zástupný znak jsou literálové znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern "s*" vyhledá všechna jména začínající path písmenem "s".

Metody EnumerateFiles a GetFiles se liší takto:

  • Při použití příkazu EnumerateFilesmůžete zahájit výčet kolekce FileInfo objektů před vrácením celé kolekce.

  • Pokud použijete GetFiles, musíte počkat na vrácení celé pole FileInfo objektů, abyste mohli získat přístup k matici.

Proto při práci s mnoha soubory a adresáři EnumerateFiles může být efektivnější.

Tato metoda předem naplní hodnoty následujících FileInfo vlastností:

Vrácená kolekce není uložena do mezipaměti; každé volání GetEnumerator metody v kolekci spustí nový výčet.

Platí pro

EnumerateFiles(String, EnumerationOptions)

Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs

Vrátí výčtovou kolekci informací o souboru, která odpovídá zadanému vzoru hledání a možnostem výčtu.

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)

Parametry

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy souborů. Tento parametr může obsahovat kombinaci platných literálových cest a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.

enumerationOptions
EnumerationOptions

Objekt, který popisuje konfiguraci vyhledávání a výčtu, která se má použít.

Návraty

Výčetná kolekce souborů, která odpovídá searchPattern a enumerationOptions.

Výjimky

searchPattern je null.

Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).

Volající nemá požadované oprávnění.

Poznámky

searchPattern může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) V této pozici není žádný nebo jeden znak.

Jiné znaky než zástupný znak jsou literálové znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern "s*" vyhledá všechna jména začínající path písmenem "s".

Metody EnumerateFiles a GetFiles se liší takto:

  • Při použití příkazu EnumerateFilesmůžete zahájit výčet kolekce FileInfo objektů před vrácením celé kolekce.

  • Pokud použijete GetFiles, musíte počkat na vrácení celé pole FileInfo objektů, abyste mohli získat přístup k matici.

Proto při práci s mnoha soubory a adresáři EnumerateFiles může být efektivnější.

Tato metoda předem naplní hodnoty následujících FileInfo vlastností:

Vrácená kolekce není uložena do mezipaměti; každé volání GetEnumerator metody v kolekci spustí nový výčet.

Platí pro

EnumerateFiles(String, SearchOption)

Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs
Zdroj:
DirectoryInfo.cs

Vrátí výčtovou kolekci informací o souboru, která odpovídá zadanému vzoru hledání a možnosti podadresáře hledání.

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)

Parametry

searchPattern
String

Hledaný řetězec, který se má shodovat s názvy souborů. Tento parametr může obsahovat kombinaci platných literálových cest a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.

searchOption
SearchOption

Jedna z hodnot výčtu, která určuje, zda má operace hledání obsahovat pouze aktuální adresář nebo všechny podadresáře. Výchozí hodnota je TopDirectoryOnly.

Návraty

Výčet kolekce souborů, která odpovídá searchPattern a searchOption.

Výjimky

searchPattern je null.

searchOption není platná SearchOption hodnota.

Cesta zapouzdřená v objektu DirectoryInfo je neplatná (například je na nenamapované jednotce).

Volající nemá požadované oprávnění.

Příklady

Následující příklad ukazuje, jak vytvořit výčet souborů v adresáři pomocí různých možností hledání. Příklad předpokládá adresář, který obsahuje soubory s názvem log1.txt, log2.txt, test1.txt, test2.txt, test3.txt, a podadresář se souborem s názvem 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 . . .

Poznámky

searchPattern může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPatternznaků.

Specifikátor zástupných znaků Shody
* (hvězdička) Na této pozici není žádný nebo více znaků.
? (otazník) V této pozici není žádný nebo jeden znak.

Jiné znaky než zástupný znak jsou literálové znaky. Například řetězec "*t" vyhledá všechna jména končící písmenem "t". ". Řetězec searchPattern "s*" vyhledá všechna jména začínající path písmenem "s".

Metody EnumerateFiles a GetFiles se liší takto:

  • Při použití příkazu EnumerateFilesmůžete zahájit výčet kolekce FileInfo objektů před vrácením celé kolekce.

  • Pokud použijete , GetFilesmusíte počkat na vrácení celého pole FileInfo objektů, abyste mohli získat přístup k poli.

Proto, když pracujete s mnoha soubory a adresáři, EnumerateFiles může být efektivnější.

Tato metoda předem vyplní hodnoty následujících FileInfo vlastností:

Vrácená kolekce není uložena v mezipaměti; každé volání metody v GetEnumerator kolekci spustí nový výčet.

Platí pro