DirectoryInfo.GetFiles Metoda

Definicja

Zwraca listę plików z bieżącego katalogu.

Przeciążenia

GetFiles(String, EnumerationOptions)

Zwraca listę plików z bieżącego katalogu pasującego do określonego wzorca wyszukiwania i opcji wyliczenia.

GetFiles(String, SearchOption)

Zwraca listę plików z bieżącego katalogu zgodnego z danym wzorcem wyszukiwania i przy użyciu wartości w celu określenia, czy przeszukiwać podkatalogi.

GetFiles()

Zwraca listę plików z bieżącego katalogu.

GetFiles(String)

Zwraca listę plików z bieżącego katalogu zgodnego z danym wzorcem wyszukiwania.

GetFiles(String, EnumerationOptions)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Zwraca listę plików z bieżącego katalogu pasującego do określonego wzorca wyszukiwania i opcji wyliczenia.

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.GetFiles : string * System.IO.EnumerationOptions -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, enumerationOptions As EnumerationOptions) As FileInfo()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

enumerationOptions
EnumerationOptions

Obiekt opisujący konfigurację wyszukiwania i wyliczenia do użycia.

Zwraca

Tablica silnie typiowanych FileInfo obiektów, które są zgodne searchPattern z elementami i enumerationOptions.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

Ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Zero lub jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

Metody EnumerateFiles i GetFiles różnią się w następujący sposób:

  • W przypadku używania programu EnumerateFilesmożna rozpocząć wyliczanie kolekcji FileInfo obiektów przed zwróceniem całej kolekcji.

  • W przypadku używania polecenia GetFilesnależy poczekać na zwrócenie całej tablicy FileInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.

W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być wydajniejszy.

Jeśli w obiekcie DirectoryInfonie ma żadnych plików , ta metoda zwraca pustą tablicę.

Następujące specyfikatory symboli wieloznacznych są dozwolone w parametrze searchPattern .

Symbol wieloznaczny Opis
* Zero lub więcej znaków.
? Dokładnie zero lub jeden znak.

Kolejność zwracanych nazw plików nie jest gwarantowana; Sort użyj metody , jeśli wymagana jest określona kolejność sortowania.

Dozwolone są symbole wieloznaczne. Na przykład searchPattern ciąg "*.txt" wyszukuje wszystkie nazwy plików o rozszerzeniu "txt". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy plików rozpoczynające się literą "s". Jeśli nie ma żadnych plików lub żadnych plików pasujących do searchPattern ciągu w metodzie DirectoryInfo, ta metoda zwraca pustą tablicę.

Uwaga

W przypadku używania symbolu wieloznakowego gwiazdki w searchPattern obiekcie (na przykład "*.txt") zachowanie dopasowania różni się w zależności od długości określonego rozszerzenia pliku. Obiekt searchPattern z rozszerzeniem pliku o dokładnie trzech znakach zwraca pliki z rozszerzeniem o co najmniej trzech znakach, gdzie pierwsze trzy znaki są zgodne z rozszerzeniem pliku określonym w searchPatternpliku . Obiekt searchPattern z rozszerzeniem pliku o długości jednej, dwóch lub więcej niż trzech znaków zwraca tylko pliki o dokładnie takiej długości, które odpowiadają rozszerzeniu pliku określonemu w obiekcie searchPattern. W przypadku używania symbolu wieloznakowego znaku zapytania ta metoda zwraca tylko pliki zgodne z określonym rozszerzeniem pliku. Na przykład w przypadku dwóch plików w katalogu "file1.txt" i "file1.txtother" wzorzec wyszukiwania "file?.txt" zwraca tylko pierwszy plik, podczas gdy wzorzec wyszukiwania "file*.txt" zwraca oba pliki.

Uwaga

Ponieważ ta metoda sprawdza nazwy plików zarówno w formacie nazwy pliku 8.3, jak i w formacie długiej nazwy pliku, wzorzec wyszukiwania podobny do "*1*.txt" może zwracać nieoczekiwane nazwy plików. Na przykład użycie wzorca wyszukiwania "*1*.txt" zwróci wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "longf~1.txt".

Ta metoda wstępnie wypełnia wartości następujących FileInfo właściwości:

Dotyczy

GetFiles(String, SearchOption)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Zwraca listę plików z bieżącego katalogu zgodnego z danym wzorcem wyszukiwania i przy użyciu wartości w celu określenia, czy przeszukiwać podkatalogi.

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);
member this.GetFiles : string * System.IO.SearchOption -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, searchOption As SearchOption) As FileInfo()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

searchOption
SearchOption

Jedna z wartości wyliczenia określająca, czy operacja wyszukiwania powinna zawierać tylko bieżący katalog, czy wszystkie podkatalogi.

Zwraca

Tablica typu FileInfo.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

searchOption jest nieprawidłową SearchOption wartością.

Ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

W poniższym przykładzie pokazano, jak uzyskać listę plików z katalogu przy użyciu różnych opcji wyszukiwania. W przykładzie przyjęto założenie, że katalog zawierający pliki o nazwie log1.txt, log2.txt, test1.txt, test2.txt, test3.txt i podkatalog o nazwie SubFile.txt.

using System;
using System.IO;

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

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
    printfn $"{fi.Name}"

printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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 . . .

Uwagi

Metody EnumerateFiles i GetFiles różnią się w następujący sposób:

  • W przypadku używania programu EnumerateFilesmożna rozpocząć wyliczanie kolekcji FileInfo obiektów przed zwróceniem całej kolekcji.

  • W przypadku używania polecenia GetFilesnależy poczekać na zwrócenie całej tablicy FileInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.

W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być wydajniejszy.

Jeśli w obiekcie DirectoryInfonie ma żadnych plików , ta metoda zwraca pustą tablicę.

Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Symbol wieloznaczny Opis
* (gwiazdka) Zero lub więcej znaków.
? (znak zapytania) Dokładnie zero lub jeden znak.

Kolejność zwracanych nazw plików nie jest gwarantowana; Sort użyj metody , jeśli wymagana jest określona kolejność sortowania.

Dozwolone są symbole wieloznaczne. Na przykład searchPattern ciąg "*.txt" wyszukuje wszystkie nazwy plików o rozszerzeniu "txt". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy plików rozpoczynające się literą "s". Jeśli nie ma żadnych plików lub żadnych plików pasujących do searchPattern ciągu w metodzie DirectoryInfo, ta metoda zwraca pustą tablicę.

Uwaga

W przypadku używania symbolu wieloznakowego gwiazdki w searchPattern obiekcie (na przykład "*.txt") zachowanie dopasowania różni się w zależności od długości określonego rozszerzenia pliku. Obiekt searchPattern z rozszerzeniem pliku o dokładnie trzech znakach zwraca pliki z rozszerzeniem o co najmniej trzech znakach, gdzie pierwsze trzy znaki są zgodne z rozszerzeniem pliku określonym w searchPatternpliku . Obiekt searchPattern z rozszerzeniem pliku o długości jednej, dwóch lub więcej niż trzech znaków zwraca tylko pliki o dokładnie takiej długości, które odpowiadają rozszerzeniu pliku określonemu w obiekcie searchPattern. W przypadku używania symbolu wieloznakowego znaku zapytania ta metoda zwraca tylko pliki zgodne z określonym rozszerzeniem pliku. Na przykład w przypadku dwóch plików w katalogu "file1.txt" i "file1.txtother" wzorzec wyszukiwania "file?.txt" zwraca tylko pierwszy plik, podczas gdy wzorzec wyszukiwania "file*.txt" zwraca oba pliki.

Na poniższej liście przedstawiono zachowanie różnych długości parametru searchPattern :

  • Wyrażenie "*.abc" zwraca pliki z rozszerzeniem .abc, .abcd, .abcde, .abcdef itd.

  • Wyrażenie "*.abcd" zwraca tylko pliki z rozszerzeniem abcd.

  • Wyrażenie "*.abcde" zwraca tylko pliki z rozszerzeniem abcde.

  • Wyrażenie "*.abcdef" zwraca tylko pliki z rozszerzeniem abcdef.

Uwaga

Ponieważ ta metoda sprawdza nazwy plików zarówno w formacie nazwy pliku 8.3, jak i w formacie długiej nazwy pliku, wzorzec wyszukiwania podobny do "*1*.txt" może zwracać nieoczekiwane nazwy plików. Na przykład użycie wzorca wyszukiwania "*1*.txt" zwróci wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "longf~1.txt".

Ta metoda wstępnie wypełnia wartości następujących FileInfo właściwości:

  1. Attributes

  2. CreationTime

  3. CreationTimeUtc

  4. LastAccessTime

  5. LastAccessTimeUtc

  6. LastWriteTime

  7. LastWriteTimeUtc

  8. Length

Zobacz też

Dotyczy

GetFiles()

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Zwraca listę plików z bieżącego katalogu.

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles();
public System.IO.FileInfo[] GetFiles ();
member this.GetFiles : unit -> System.IO.FileInfo[]
Public Function GetFiles () As FileInfo()

Zwraca

Tablica typu FileInfo.

Wyjątki

Ścieżka jest nieprawidłowa, na przykład na dysku niezamapowanym.

Przykłady

W poniższym przykładzie pokazano, jak uzyskać listę plików z katalogu przy użyciu różnych opcji wyszukiwania. W przykładzie przyjęto założenie, że katalog zawierający pliki o nazwie log1.txt, log2.txt, test1.txt, test2.txt, test3.txt i podkatalog o nazwie SubFile.txt.

using System;
using System.IO;

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

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
    printfn $"{fi.Name}"

printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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 . . .

Uwagi

Metody EnumerateFiles i GetFiles różnią się w następujący sposób:

  • W przypadku używania programu EnumerateFilesmożna rozpocząć wyliczanie kolekcji FileInfo obiektów przed zwróceniem całej kolekcji.

  • W przypadku używania polecenia GetFilesnależy poczekać na zwrócenie całej tablicy FileInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.

W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być wydajniejszy.

Jeśli w obiekcie DirectoryInfonie ma żadnych plików , ta metoda zwraca pustą tablicę.

Kolejność zwracanych nazw plików nie jest gwarantowana; Sort użyj metody , jeśli wymagana jest określona kolejność sortowania.

Ta metoda wstępnie wypełnia wartości następujących FileInfo właściwości:

Zobacz też

Dotyczy

GetFiles(String)

Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs
Źródło:
DirectoryInfo.cs

Zwraca listę plików z bieżącego katalogu zgodnego z danym wzorcem wyszukiwania.

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern);
public System.IO.FileInfo[] GetFiles (string searchPattern);
member this.GetFiles : string -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String) As FileInfo()

Parametry

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami plików. Ten parametr może zawierać kombinację prawidłowych znaków ścieżki literału i symboli wieloznacznych (* i ?), ale nie obsługuje wyrażeń regularnych.

Zwraca

Tablica typu FileInfo.

Wyjątki

.NET Framework i .NET Core w wersjach starszych niż 2.1: searchPattern zawiera co najmniej jeden nieprawidłowy znak zdefiniowany przez metodę GetInvalidPathChars() .

searchPattern to null.

Ścieżka jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

W poniższym przykładzie pokazano, jak uzyskać listę plików z katalogu przy użyciu różnych opcji wyszukiwania. W przykładzie przyjęto założenie, że katalog zawierający pliki o nazwie log1.txt, log2.txt, test1.txt, test2.txt, test3.txt i podkatalog o nazwie SubFile.txt.

using System;
using System.IO;

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

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
    printfn $"{fi.Name}"

printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
    printfn $"{fi.Name}"

printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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 . . .

Uwagi

searchPattern może być kombinacją literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych. Następujące specyfikatory symboli wieloznacznych są dozwolone w programie searchPattern.

Specyfikator symboli wieloznacznych Jest zgodny z
* (gwiazdka) Zero lub więcej znaków w tej pozycji.
? (znak zapytania) Zero lub jeden znak w tej pozycji.

Znaki inne niż symbol wieloznaczny to znaki literału. Na przykład ciąg "*t" wyszukuje wszystkie nazwy kończące się literą "t". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy, path zaczynając od litery "s".

Metody EnumerateFiles i GetFiles różnią się w następujący sposób:

  • W przypadku używania programu EnumerateFilesmożna rozpocząć wyliczanie kolekcji FileInfo obiektów przed zwróceniem całej kolekcji.

  • W przypadku używania polecenia GetFilesnależy poczekać na zwrócenie całej tablicy FileInfo obiektów, zanim będzie można uzyskać dostęp do tablicy.

W związku z tym podczas pracy z wieloma plikami i katalogami EnumerateFiles może być wydajniejszy.

Jeśli w obiekcie DirectoryInfonie ma żadnych plików , ta metoda zwraca pustą tablicę.

Następujące specyfikatory symboli wieloznacznych są dozwolone w parametrze searchPattern .

Symbol wieloznaczny Opis
* Zero lub więcej znaków.
? Dokładnie zero lub jeden znak.

Kolejność zwracanych nazw plików nie jest gwarantowana; Sort użyj metody , jeśli wymagana jest określona kolejność sortowania.

Dozwolone są symbole wieloznaczne. Na przykład searchPattern ciąg "*.txt" wyszukuje wszystkie nazwy plików o rozszerzeniu "txt". Ciąg searchPattern "s*" wyszukuje wszystkie nazwy plików rozpoczynające się literą "s". Jeśli nie ma żadnych plików lub żadnych plików pasujących do searchPattern ciągu w metodzie DirectoryInfo, ta metoda zwraca pustą tablicę.

Uwaga

W przypadku używania symbolu wieloznakowego gwiazdki w searchPattern obiekcie (na przykład "*.txt") zachowanie dopasowania różni się w zależności od długości określonego rozszerzenia pliku. Obiekt searchPattern z rozszerzeniem pliku o dokładnie trzech znakach zwraca pliki z rozszerzeniem o co najmniej trzech znakach, gdzie pierwsze trzy znaki są zgodne z rozszerzeniem pliku określonym w searchPatternpliku . Obiekt searchPattern z rozszerzeniem pliku o długości jednej, dwóch lub więcej niż trzech znaków zwraca tylko pliki o dokładnie takiej długości, które odpowiadają rozszerzeniu pliku określonemu w obiekcie searchPattern. W przypadku używania symbolu wieloznakowego znaku zapytania ta metoda zwraca tylko pliki zgodne z określonym rozszerzeniem pliku. Na przykład w przypadku dwóch plików w katalogu "file1.txt" i "file1.txtother" wzorzec wyszukiwania "file?.txt" zwraca tylko pierwszy plik, podczas gdy wzorzec wyszukiwania "file*.txt" zwraca oba pliki.

Uwaga

Ponieważ ta metoda sprawdza nazwy plików zarówno w formacie nazwy pliku 8.3, jak i w formacie długiej nazwy pliku, wzorzec wyszukiwania podobny do "*1*.txt" może zwracać nieoczekiwane nazwy plików. Na przykład użycie wzorca wyszukiwania "*1*.txt" zwróci wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "longf~1.txt".

Ta metoda wstępnie wypełnia wartości następujących FileInfo właściwości:

Zobacz też

Dotyczy