Udostępnij za pośrednictwem


Directory.GetFiles Metoda

Definicja

Zwraca nazwy plików spełniających określone kryteria.

Przeciążenia

GetFiles(String)

Zwraca nazwy plików (w tym ich ścieżki) w określonym katalogu.

GetFiles(String, String)

Zwraca nazwy plików (w tym ich ścieżek), które pasują do określonego wzorca wyszukiwania w określonym katalogu.

GetFiles(String, String, EnumerationOptions)

Zwraca nazwy plików (w tym ich ścieżki), które pasują do określonego wzorca wyszukiwania i opcji wyliczenia w określonym katalogu.

GetFiles(String, String, SearchOption)

Zwraca nazwy plików (w tym ich ścieżki), które pasują do określonego wzorca wyszukiwania w określonym katalogu, używając wartości w celu określenia, czy przeszukiwać podkatalogów.

GetFiles(String)

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

Zwraca nazwy plików (w tym ich ścieżki) w określonym katalogu.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path);
public static string[] GetFiles (string path);
static member GetFiles : string -> string[]
Public Shared Function GetFiles (path As String) As String()

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukiwania. W tym ciągu nie jest rozróżniana wielkość liter.

Zwraca

String[]

Tablica pełnych nazw (w tym ścieżek) dla plików w określonym katalogu lub pustej tablicy, jeśli nie zostaną znalezione żadne pliki.

Wyjątki

path to nazwa pliku.

-lub-

Wystąpił błąd sieci.

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

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars() metody .

path to null.

Podana ścieżka, nazwa pliku lub obie przekraczają maksymalną długość zdefiniowaną przez system.

Określona ścieżka nie zostanie znaleziona lub jest nieprawidłowa (na przykład znajduje się na niemapowanym dysku).

Przykłady

W poniższym przykładzie pokazano, jak za pomocą GetFiles metody zwracać nazwy plików z lokalizacji określonej przez użytkownika. Przykład jest skonfigurowany do przechwytywania wszystkich błędów typowych dla tej metody.

// For Directory::GetFiles and Directory::GetDirectories
// For File::Exists, Directory::Exists
using namespace System;
using namespace System::IO;
using namespace System::Collections;

// Insert logic for processing found files here.
void ProcessFile( String^ path )
{
   Console::WriteLine( "Processed file '{0}'.", path );
}


// Process all files in the directory passed in, recurse on any directories 
// that are found, and process the files they contain.
void ProcessDirectory( String^ targetDirectory )
{
   
   // Process the list of files found in the directory.
   array<String^>^fileEntries = Directory::GetFiles( targetDirectory );
   IEnumerator^ files = fileEntries->GetEnumerator();
   while ( files->MoveNext() )
   {
      String^ fileName = safe_cast<String^>(files->Current);
      ProcessFile( fileName );
   }

   
   // Recurse into subdirectories of this directory.
   array<String^>^subdirectoryEntries = Directory::GetDirectories( targetDirectory );
   IEnumerator^ dirs = subdirectoryEntries->GetEnumerator();
   while ( dirs->MoveNext() )
   {
      String^ subdirectory = safe_cast<String^>(dirs->Current);
      ProcessDirectory( subdirectory );
   }
}

int main( int argc, char *argv[] )
{
   for ( int i = 1; i < argc; i++ )
   {
      String^ path = gcnew String(argv[ i ]);
      if ( File::Exists( path ) )
      {
         
         // This path is a file
         ProcessFile( path );
      }
      else
      if ( Directory::Exists( path ) )
      {
         
         // This path is a directory
         ProcessDirectory( path );
      }
      else
      {
         Console::WriteLine( "{0} is not a valid file or directory.", path );
      }

   }
}
// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);	
    }
}
module RecursiveFileProcessor

open System.IO

// Insert logic for processing found files here.
let processFile path =
    printfn $"Processed file '%s{path}'."

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
    // Process the list of files found in the directory.
    let fileEntries = Directory.GetFiles targetDirectory
    for fileName in fileEntries do
        processFile fileName

    // Recurse into subdirectories of this directory.
    let subdirectoryEntries = Directory.GetDirectories targetDirectory
    for subdirectory in subdirectoryEntries do
        processDirectory subdirectory

[<EntryPoint>]
let main args =
    for path in args do
        if File.Exists path then
            // This path is a file
            processFile path
        elif Directory.Exists path then
            // This path is a directory
            processDirectory path
        else
            printfn $"{path} is not a valid file or directory."
    0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists 

Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub


    ' Process all files in the directory passed in, recurse on any directories 
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub
End Class

Uwagi

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku używania metody EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetFilesnależy poczekać na zwrócenie całej tablicy nazw, 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.

Zwrócone nazwy plików są dołączane do podanego path parametru.

Ta metoda jest identyczna z GetFiles(String, String) gwiazdką (*) określoną jako wzorzec wyszukiwania.

Parametr path może określać informacje o ścieżce względnej lub bezwzględnej. Informacje o ścieżce względnej są interpretowane jako względne w stosunku do bieżącego katalogu roboczego. Aby uzyskać bieżący katalog roboczy, zobacz GetCurrentDirectory.

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

Ważność wielkości liter parametru path odpowiada wartości systemu plików, na którym działa kod. Na przykład jest rozróżniana wielkość liter w systemie plików NTFS (domyślny system plików systemu Windows) i rozróżniana wielkość liter w systemach plików systemu Linux.

Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.

Zobacz też

Dotyczy

GetFiles(String, String)

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

Zwraca nazwy plików (w tym ich ścieżek), które są zgodne z określonym wzorcem wyszukiwania w określonym katalogu.

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path, System::String ^ searchPattern);
public static string[] GetFiles (string path, string searchPattern);
static member GetFiles : string * string -> string[]
Public Shared Function GetFiles (path As String, searchPattern As String) As String()

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukiwania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

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

Zwraca

String[]

Tablica pełnych nazw (w tym ścieżek) dla plików w określonym katalogu, które są zgodne z określonym wzorcem wyszukiwania, lub pustą tablicą, jeśli nie znaleziono żadnych plików.

Wyjątki

path to nazwa pliku.

-lub-

Wystąpił błąd sieci.

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

.NET Framework i .NET Core w wersjach starszych niż 2.1: path jest ciągiem o zerowej długości, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak. Zapytania dotyczące nieprawidłowych znaków można wykonać przy użyciu polecenia GetInvalidPathChars().

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path lub searchPattern to null.

Podana ścieżka, nazwa pliku lub obie przekraczają maksymalną długość zdefiniowaną przez system.

Określona ścieżka nie zostanie znaleziona lub jest nieprawidłowa (na przykład znajduje się na niemapowanym dysku).

Przykłady

Poniższy przykład zlicza liczbę plików rozpoczynających się od określonej litery.

using namespace System;
using namespace System::IO;
int main()
{
   try
   {
      
      // Only get files that begin with the letter "c".
      array<String^>^dirs = Directory::GetFiles( "c:\\", "c*" );
      Console::WriteLine( "The number of files starting with c is {0}.", dirs->Length );
      Collections::IEnumerator^ myEnum = dirs->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Console::WriteLine( myEnum->Current );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        try
        {
            // Only get files that begin with the letter "c".
            string[] dirs = Directory.GetFiles(@"c:\", "c*");
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
            foreach (string dir in dirs)
            {
                Console.WriteLine(dir);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}
open System.IO

try
    // Only get files that begin with the letter "c".
    let dirs = Directory.GetFiles(@"c:\", "c*")
    printfn $"The number of files starting with c is {dirs.Length}."
    for dir in dirs do
        printfn $"{dir}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get files that begin with the letter "c".
            Dim dirs As String() = Directory.GetFiles("c:\", "c*")
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

Uwagi

Zwracane nazwy plików są dołączane do podanego path parametru, a kolejność zwracanych nazw plików nie jest gwarantowana. Użyj Sort metody, jeśli jest wymagana określona kolejność sortowania.

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 pliku searchPattern.

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

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

searchPattern nie może kończyć się dwoma kropkami ("..") lub zawierać dwa kropki (".)."), po DirectorySeparatorChar których następuje lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Możesz wykonać zapytanie o nieprawidłowe znaki przy użyciu GetInvalidPathChars metody .

Uwaga

Tylko program .NET Framework: Jeśli używasz znaku wieloznakowego gwiazdki w obiekcie searchPattern i określisz rozszerzenie pliku o trzech znakach, na przykład "*.txt", ta metoda zwraca również pliki z rozszerzeniami rozpoczynającymi się od określonego rozszerzenia. Na przykład wzorzec wyszukiwania "*.xls" zwraca zarówno "book.xls" jak i "book.xlsx". To zachowanie występuje tylko wtedy, gdy gwiazdka jest używana we wzorcu wyszukiwania, a podane rozszerzenie pliku ma dokładnie trzy znaki. Jeśli używasz znaku wieloznakowego znaku zapytania gdzieś w wzorcu wyszukiwania, ta metoda zwraca tylko pliki zgodne z określonym rozszerzeniem pliku dokładnie. W poniższej tabeli przedstawiono tę anomalię w programie .NET Framework.

Pliki w katalogu Wzorzec wyszukiwania Zwracany jest program .NET 5+ Zwracany jest program .NET Framework
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

Uwaga

Ponieważ ta metoda sprawdza nazwy plików z formatem nazwy pliku 8.3 i długim formatem nazwy pliku, wzorzec wyszukiwania podobny do "*1*.txt" może zwracać nieoczekiwane nazwy plików. Na przykład użycie wzorca wyszukiwania "*1*.txt" zwraca wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "LONGFI~1.TXT".

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku używania metody EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetFilesnależy poczekać na zwrócenie całej tablicy nazw, 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.

Parametr path może określać informacje o ścieżce względnej lub bezwzględnej. Informacje o ścieżce względnej są interpretowane jako względne w stosunku do bieżącego katalogu roboczego. Aby uzyskać bieżący katalog roboczy, zobacz GetCurrentDirectory.

Wielkość liter parametru path odpowiada wielkości liter w systemie plików, w którym jest uruchomiony kod. Na przykład jest rozróżniana wielkość liter w systemie plików NTFS (domyślny system plików systemu Windows) i rozróżniana jest wielkość liter w systemach plików systemu Linux.

Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.

Zobacz też

Dotyczy

GetFiles(String, String, EnumerationOptions)

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

Zwraca nazwy plików (w tym ich ścieżki), które są zgodne z określonym wzorcem wyszukiwania i opcjami wyliczania w określonym katalogu.

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

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami plików w pliku path. Ten parametr może zawierać kombinację prawidłowych literałów i symboli wieloznacznych, ale nie obsługuje wyrażeń regularnych.

enumerationOptions
EnumerationOptions

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

Zwraca

String[]

Tablica pełnych nazw (w tym ścieżek) dla plików w określonym katalogu, które są zgodne z określonym wzorcem wyszukiwania i opcjami wyliczania, lub pustą tablicą, jeśli nie znaleziono plików.

Wyjątki

path to nazwa pliku.

-lub-

Wystąpił błąd sieci.

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

Programy .NET Framework i .NET Core starsze niż 2.1: path to ciąg o zerowej długości, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak. Zapytanie dotyczące nieprawidłowych znaków można wykonać przy użyciu polecenia GetInvalidPathChars().

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path lub searchPattern ma wartość null.

Podana ścieżka, nazwa pliku lub obie przekraczają maksymalną długość zdefiniowaną przez system.

Określona ścieżka nie została znaleziona lub jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Uwagi

Zwrócone nazwy plików są dołączane do podanego path parametru, a kolejność zwracanych nazw plików nie jest gwarantowana; użyj Sort metody , jeśli jest wymagana określona kolejność sortowania.

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) Dokładnie jeden znak w tej pozycji.

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

searchPattern program nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar znak lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Zapytania dotyczące nieprawidłowych znaków można wykonać przy użyciu GetInvalidPathChars metody .

Uwaga

Tylko program .NET Framework: W przypadku użycia znaku wieloznakowego gwiazdki w searchPattern pliku i określenia rozszerzenia pliku z trzema znakami, na przykład "*.txt", ta metoda zwraca również pliki z rozszerzeniami rozpoczynającymi się od określonego rozszerzenia. Na przykład wzorzec wyszukiwania "*.xls" zwraca zarówno "book.xls" jak i "book.xlsx". To zachowanie występuje tylko wtedy, gdy gwiazdka jest używana we wzorcu wyszukiwania, a podane rozszerzenie pliku to dokładnie trzy znaki. Jeśli używasz symbolu wieloznakowego znaku zapytania gdzieś we wzorcu wyszukiwania, ta metoda zwraca tylko pliki, które dokładnie pasują do określonego rozszerzenia pliku. Poniższa tabela przedstawia tę anomalię w programie .NET Framework.

Pliki w katalogu Wzorzec wyszukiwania Zwracany jest program .NET 5+ Zwracany jest program .NET Framework
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

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" zwraca wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "LONGFI~1.TXT".

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku użycia metody EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetFilesnależy poczekać na zwrócenie całej tablicy nazw, 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.

Parametr path może określać informacje o ścieżce względnej lub bezwzględnej. Informacje o ścieżce względnej są interpretowane jako względne w stosunku do bieżącego katalogu roboczego. Aby uzyskać bieżący katalog roboczy, zobacz GetCurrentDirectory.

Wielkość liter parametru path odpowiada wielkości liter w systemie plików, w którym jest uruchomiony kod. Na przykład jest rozróżniana wielkość liter w systemie plików NTFS (domyślny system plików systemu Windows) i rozróżniana jest wielkość liter w systemach plików systemu Linux.

Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.

Dotyczy

GetFiles(String, String, SearchOption)

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

Zwraca nazwy plików (w tym ich ścieżek), które pasują do określonego wzorca wyszukiwania w określonym katalogu, używając wartości w celu określenia, czy przeszukiwać podkatalogi.

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

Parametry

path
String

Ścieżka względna lub bezwzględna do katalogu do wyszukania. W tym ciągu nie jest rozróżniana wielkość liter.

searchPattern
String

Ciąg wyszukiwania zgodny z nazwami plików w pliku path. 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ć wszystkie podkatalogi, czy tylko bieżący katalog.

Zwraca

String[]

Tablica pełnych nazw (w tym ścieżek) dla plików w określonym katalogu, które pasują do określonego wzorca wyszukiwania i opcji, lub pustej tablicy, jeśli nie znaleziono plików.

Wyjątki

Programy .NET Framework i .NET Core starsze niż 2.1: path to ciąg o zerowej długości, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak. Możesz wykonać zapytanie o nieprawidłowe znaki za pomocą GetInvalidPathChars() metody .

-lub-

searchPattern nie zawiera prawidłowego wzorca.

path lub searchpattern ma wartość null.

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

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

Określona ścieżka nie została znaleziona lub jest nieprawidłowa (na przykład znajduje się na niezamapowanym dysku).

Podana ścieżka, nazwa pliku lub obie przekraczają maksymalną długość zdefiniowaną przez system.

path to nazwa pliku.

-lub-

Wystąpił błąd sieci.

Uwagi

Zwrócone nazwy plików są dołączane do podanego parametru path , a kolejność zwracanych nazw plików nie jest gwarantowana; użyj Sort metody , jeśli jest wymagana określona kolejność sortowania.

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) Dokładnie jeden znak w tej pozycji.

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

searchPattern program nie może kończyć się dwoma kropkami ("..") ani zawierać dwóch kropek (".."), po których następuje DirectorySeparatorChar znak lub AltDirectorySeparatorChar, ani nie może zawierać żadnych nieprawidłowych znaków. Zapytania dotyczące nieprawidłowych znaków można wykonać przy użyciu GetInvalidPathChars metody .

Uwaga

Tylko program .NET Framework: W przypadku użycia znaku wieloznakowego gwiazdki w searchPattern pliku i określenia rozszerzenia pliku z trzema znakami, na przykład "*.txt", ta metoda zwraca również pliki z rozszerzeniami rozpoczynającymi się od określonego rozszerzenia. Na przykład wzorzec wyszukiwania "*.xls" zwraca zarówno "book.xls" jak i "book.xlsx". To zachowanie występuje tylko wtedy, gdy gwiazdka jest używana we wzorcu wyszukiwania, a podane rozszerzenie pliku to dokładnie trzy znaki. Jeśli używasz symbolu wieloznakowego znaku zapytania gdzieś we wzorcu wyszukiwania, ta metoda zwraca tylko pliki, które dokładnie pasują do określonego rozszerzenia pliku. Poniższa tabela przedstawia tę anomalię w programie .NET Framework.

Pliki w katalogu Wzorzec wyszukiwania Zwracany jest program .NET 5+ Zwracany jest program .NET Framework
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

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" zwraca wartość "longfilename.txt", ponieważ równoważny format nazwy pliku 8.3 to "LONGFI~1.TXT".

Metody EnumerateFiles i GetFiles różnią się w następujący sposób: w przypadku użycia metody EnumerateFilesmożna rozpocząć wyliczanie kolekcji nazw przed zwróceniem całej kolekcji. W przypadku użycia metody GetFilesnależy poczekać na zwrócenie całej tablicy nazw, 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.

Nazwy plików zawierają pełną ścieżkę.

Parametr path może określać informacje o ścieżce względnej lub bezwzględnej. Informacje o ścieżce względnej są interpretowane jako względne w stosunku do bieżącego katalogu roboczego. Aby uzyskać bieżący katalog roboczy, zobacz GetCurrentDirectory.

Wielkość liter parametru path odpowiada wielkości liter w systemie plików, w którym jest uruchomiony kod. Na przykład jest rozróżniana wielkość liter w systemie plików NTFS (domyślny system plików systemu Windows) i rozróżniana jest wielkość liter w systemach plików systemu Linux.

Aby uzyskać listę typowych zadań we/wy, zobacz Typowe zadania we/wy.

Zobacz też

Dotyczy