Freigeben über


Directory.GetFiles Methode

Definition

Gibt die Namen der Dateien zurück, die die angegebenen Kriterien erfüllen.

Überlädt

GetFiles(String)

Gibt die Namen aller Dateien (einschließlich des Pfads) im angegebenen Verzeichnis zurück.

GetFiles(String, String)

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster im angegebenen Verzeichnis entsprechen.

GetFiles(String, String, EnumerationOptions)

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster und den angegebenen Enumerationsoptionen im angegebenen Verzeichnis entsprechen.

GetFiles(String, String, SearchOption)

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster im angegebenen Verzeichnis entsprechen. Anhand eines Werts wird bestimmt, ob Unterverzeichnisse durchsucht werden sollen.

GetFiles(String)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Gibt die Namen aller Dateien (einschließlich des Pfads) im angegebenen Verzeichnis zurück.

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()

Parameter

path
String

Der relative oder absolute Pfad zum Verzeichnis, das durchsucht werden soll. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht berücksichtigt.

Gibt zurück

String[]

Ein Array der vollständigen Namen (einschließlich der Pfade) für die Dateien im angegebenen Verzeichnis, oder ein leeres Array, wenn keine Dateien gefunden werden.

Ausnahmen

path ist ein Dateiname.

- oder -

Es ist ein Netzwerkfehler aufgetreten.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

.NET Framework- und .NET Core-Versionen älter als 2.1: path ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält ein oder mehrere ungültige Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

path ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Der angegebene Pfad wurde nicht gefunden oder ist ungültig (er befindet sich z. B.auf einem nicht zugeordneten Laufwerk).

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie die GetFiles -Methode verwendet wird, um Dateinamen von einem vom Benutzer angegebenen Speicherort zurückzugeben. Das Beispiel ist so konfiguriert, dass alle Fehler erfasst werden, die bei dieser Methode auftreten.

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

Hinweise

Die EnumerateFiles Methoden und GetFiles unterscheiden sich wie folgt: Wenn Sie verwenden EnumerateFiles, können Sie mit dem Aufzählen der Auflistung von Namen beginnen, bevor die gesamte Auflistung zurückgegeben wird. Wenn Sie verwenden GetFiles, müssen Sie warten, bis das gesamte Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können. Daher kann es effizienter sein, EnumerateFiles wenn Sie mit vielen Dateien und Verzeichnissen arbeiten.

Die zurückgegebenen Dateinamen werden an den angegebenen path Parameter angefügt.

Diese Methode ist mit dem Sternchen (*) identisch GetFiles(String, String) , das als Suchmuster angegeben ist.

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Die Reihenfolge der zurückgegebenen Dateinamen ist nicht garantiert; verwenden Sie die Sort -Methode, wenn eine bestimmte Sortierreihenfolge erforderlich ist.

Die Groß-/Kleinschreibung des path Parameters entspricht der des Dateisystems, in dem der Code ausgeführt wird. Beispielsweise wird bei NTFS (dem standardmäßigen Windows-Dateisystem) die Groß-/Kleinschreibung und bei Linux-Dateisystemen die Groß-/Kleinschreibung nicht beachtet.

Eine Liste der allgemeinen E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Weitere Informationen

Gilt für:

GetFiles(String, String)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster im angegebenen Verzeichnis entsprechen.

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()

Parameter

path
String

Der relative oder absolute Pfad zum Verzeichnis, das durchsucht werden soll. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht berücksichtigt.

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Dateien in path auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke.

Gibt zurück

String[]

Ein Array der vollständigen Namen der Dateien im angegebenen Verzeichnis (einschließlich der zugehörigen Pfade), die dem angegebenen Suchmuster entsprechen, oder ein leeres Array, wenn keine Dateien gefunden werden.

Ausnahmen

path ist ein Dateiname.

- oder -

Es ist ein Netzwerkfehler aufgetreten.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

.NET Framework- und .NET Core-Versionen älter als 2.1: path ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält ein oder mehrere ungültige Zeichen. Mit GetInvalidPathChars() können Sie Abfragen für ungültige Zeichen ausführen.

- oder -

searchPattern enthält kein gültiges Muster.

path oder searchPattern ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Der angegebene Pfad wurde nicht gefunden oder ist ungültig (er befindet sich z. B.auf einem nicht zugeordneten Laufwerk).

Beispiele

Im folgenden Beispiel wird die Anzahl der Dateien gezählt, die mit dem angegebenen Buchstaben beginnen.

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

Hinweise

Die zurückgegebenen Dateinamen werden an den angegebenen path Parameter angefügt, und die Reihenfolge der zurückgegebenen Dateinamen ist nicht garantiert. Verwenden Sie die Sort -Methode, wenn eine bestimmte Sortierreihenfolge erforderlich ist.

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcardspezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Genau ein Zeichen an dieser Position.

Andere Zeichen als das Wildcard sind Literalzeichen. Beispielsweise sucht die searchPattern Zeichenfolge "*t" nach allen Namen, path die mit dem Buchstaben "t" enden. Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

searchPattern darf nicht mit zwei Punkten ("..") enden oder zwei Punkte ("..") gefolgt von DirectorySeparatorChar oder AltDirectorySeparatorCharenthalten, noch darf er ungültige Zeichen enthalten. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars-Methode ausführen.

Hinweis

Nur .NET Framework: Wenn Sie das Sternchen in searchPattern verwenden und eine dreistellige Dateierweiterung angeben, z. B. "*.txt", gibt diese Methode auch Dateien mit Erweiterungen zurück, die mit der angegebenen Erweiterung beginnen . Das Suchmuster "*.xls" gibt beispielsweise sowohl "book.xls" als auch "book.xlsx" zurück. Dieses Verhalten tritt nur auf, wenn im Suchmuster ein Sternchen verwendet wird und die bereitgestellte Dateierweiterung genau drei Zeichen umfasst. Wenn Sie das Fragezeichen-Wildcardzeichen irgendwo im Suchmuster verwenden, gibt diese Methode nur Dateien zurück, die genau mit der angegebenen Dateierweiterung übereinstimmen. Die folgende Tabelle zeigt diese Anomalie in .NET Framework.

Dateien im Verzeichnis Suchmuster Rückgaben von .NET 5 und höher .NET Framework gibt zurück
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

Hinweis

Da diese Methode auf Dateinamen mit dem Dateinamenformat 8.3 und dem langen Dateinamenformat überprüft, gibt ein Suchmuster ähnlich wie "*1*.txt" möglicherweise unerwartete Dateinamen zurück. Wenn Sie z. B. das Suchmuster "*1*.txt" verwenden, wird "longfilename.txt" zurückgegeben, da das äquivalente 8.3-Dateinamenformat "LONGFI~1.TXT" ist.

Die EnumerateFiles Methoden und GetFiles unterscheiden sich wie folgt: Wenn Sie verwenden EnumerateFiles, können Sie mit dem Aufzählen der Auflistung von Namen beginnen, bevor die gesamte Auflistung zurückgegeben wird. Wenn Sie verwenden GetFiles, müssen Sie warten, bis das gesamte Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können. Daher kann es effizienter sein, EnumerateFiles wenn Sie mit vielen Dateien und Verzeichnissen arbeiten.

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Die Groß-/Kleinschreibung des path Parameters entspricht der des Dateisystems, auf dem der Code ausgeführt wird. Beispielsweise wird bei NTFS (dem Windows-Standarddateisystem) die Groß-/Kleinschreibung nicht beachtet und bei Linux-Dateisystemen die Groß-/Kleinschreibung beachtet.

Eine Liste allgemeiner E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Weitere Informationen

Gilt für:

GetFiles(String, String, EnumerationOptions)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster und den angegebenen Enumerationsoptionen im angegebenen Verzeichnis entsprechen.

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()

Parameter

path
String

Der relative oder absolute Pfad zum Verzeichnis, das durchsucht werden soll. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht berücksichtigt.

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Dateien in path auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literal- und Platzhalterzeichen enthalten, unterstützt jedoch keine regulären Ausdrücke.

enumerationOptions
EnumerationOptions

Ein Objekt, das die zu verwendende Such- und Enumerationskonfiguration beschreibt.

Gibt zurück

String[]

Ein Array der vollständigen Namen der Dateien im angegebenen Verzeichnis (einschließlich der Pfade), die dem angegebenen Suchmuster und den angegebenen Enumerationsoptionen entsprechen, oder ein leeres Array, wenn keine Dateien gefunden werden.

Ausnahmen

path ist ein Dateiname.

- oder -

Es ist ein Netzwerkfehler aufgetreten.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

.NET Framework- und .NET Core-Versionen älter als 2.1: path Ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Mit GetInvalidPathChars() können Sie Abfragen für ungültige Zeichen ausführen.

- oder -

searchPattern enthält kein gültiges Muster.

path oder searchPattern ist null.

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

Der angegebene Pfad wurde nicht gefunden oder ist ungültig (er befindet sich z. B.auf einem nicht zugeordneten Laufwerk).

Hinweise

Die zurückgegebenen Dateinamen werden an den angegebenen path Parameter angefügt, und die Reihenfolge der zurückgegebenen Dateinamen ist nicht garantiert. Verwenden Sie die Sort -Methode, wenn eine bestimmte Sortierreihenfolge erforderlich ist.

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcard-Spezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Genau ein Zeichen in dieser Position.

Andere Zeichen als das Feldhalter sind Literalzeichen. Die Zeichenfolge "*t" sucht beispielsweise nach allen Namen, searchPatternpath die mit dem Buchstaben "t" enden. Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

searchPattern kann nicht in zwei Perioden ("..") enden oder zwei Punkte ("..") gefolgt von DirectorySeparatorChar oder AltDirectorySeparatorCharenthalten, und es kann auch keine ungültigen Zeichen enthalten. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars-Methode ausführen.

Hinweis

Nur .NET Framework: Wenn Sie das Sternchen platzhalter in searchPattern verwenden und eine dreistellige Dateierweiterung angeben, z. B. "*.txt", gibt diese Methode auch Dateien mit Erweiterungen zurück, die mit der angegebenen Erweiterung beginnen . Das Suchmuster "*.xls" gibt beispielsweise sowohl "book.xls" als auch "book.xlsx" zurück. Dieses Verhalten tritt nur auf, wenn im Suchmuster ein Sternchen verwendet wird und die bereitgestellte Dateierweiterung genau drei Zeichen umfasst. Wenn Sie das Fragezeichenplatzzeichen irgendwo im Suchmuster verwenden, gibt diese Methode nur Dateien zurück, die genau mit der angegebenen Dateierweiterung übereinstimmen. In der folgenden Tabelle wird diese Anomalie in .NET Framework dargestellt.

Dateien im Verzeichnis Suchmuster .NET 5+ gibt zurück .NET Framework gibt zurück
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

Hinweis

Da diese Methode anhand von Dateinamen mit dem Dateinamenformat 8.3 und dem Langen Dateinamenformat überprüft wird, kann ein Suchmuster ähnlich "*1*.txt" unerwartete Dateinamen zurückgeben. Beispielsweise gibt das Suchmuster "*1*.txt" "longfilename.txt" zurück, da das entsprechende 8.3-Dateinamenformat "LONGFI~1.TXT" ist.

Die EnumerateFiles Methoden und GetFiles unterscheiden sich wie folgt: Wenn Sie EnumerateFilesverwenden, können Sie mit der Auflistung der Namen beginnen, bevor die gesamte Auflistung zurückgegeben wird. Wenn Sie verwenden GetFiles, müssen Sie warten, bis das gesamte Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können. Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateFiles kann es daher effizienter sein.

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Die Groß-/Kleinschreibung des path Parameters entspricht der des Dateisystems, auf dem der Code ausgeführt wird. Beispielsweise wird bei NTFS (dem Windows-Standarddateisystem) die Groß-/Kleinschreibung nicht beachtet und bei Linux-Dateisystemen die Groß-/Kleinschreibung beachtet.

Eine Liste allgemeiner E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Gilt für:

GetFiles(String, String, SearchOption)

Quelle:
Directory.cs
Quelle:
Directory.cs
Quelle:
Directory.cs

Gibt die Namen der Dateien (einschließlich der zugehörigen Pfade) zurück, die dem angegebenen Suchmuster im angegebenen Verzeichnis entsprechen. Anhand eines Werts wird bestimmt, ob Unterverzeichnisse durchsucht werden sollen.

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()

Parameter

path
String

Der relative oder absolute Pfad zum Verzeichnis, das durchsucht werden soll. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht berücksichtigt.

searchPattern
String

Die Suchzeichenfolge für die Überprüfung der Namen von Dateien in path auf Übereinstimmungen. Dieser Parameter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke.

searchOption
SearchOption

Einer der Enumerationswerte, der angibt, ob nur das aktuelle Verzeichnis oder auch alle Unterverzeichnisse durchsucht werden sollen.

Gibt zurück

String[]

Ein Array der vollständigen Namen der Dateien im angegebenen Verzeichnis (einschließlich der Pfade), die dem angegebenen Suchmuster und der Option entsprechen, oder ein leeres Array, wenn keine Dateien gefunden werden.

Ausnahmen

.NET Framework- und .NET Core-Versionen älter als 2.1: path Ist eine Zeichenfolge der Länge null, enthält nur Leerzeichen oder enthält mindestens ein ungültiges Zeichen. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars()-Methode ausführen.

- oder -

searchPattern enthält kein gültiges Muster.

path oder searchpattern ist null.

searchOption ist kein gültiger SearchOption -Wert.

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Der angegebene Pfad wurde nicht gefunden oder ist ungültig (er befindet sich z. B.auf einem nicht zugeordneten Laufwerk).

Der angegebene Pfad und/oder Dateiname überschreiten die vom System definierte maximale Länge.

path ist ein Dateiname.

- oder -

Es ist ein Netzwerkfehler aufgetreten.

Hinweise

Die zurückgegebenen Dateinamen werden an den angegebenen Parameter path angefügt, und die Reihenfolge der zurückgegebenen Dateinamen ist nicht garantiert. Verwenden Sie die Sort -Methode, wenn eine bestimmte Sortierreihenfolge erforderlich ist.

searchPattern kann eine Kombination von Literal-und Platzhalterzeichen, jedoch werden reguläre Ausdrücke nicht unterstützt. Die folgenden Wildcard-Spezifizierer sind in searchPatternzulässig.

Wildcard-Spezifizierer Treffer
* (Sternchen) Null oder mehr Zeichen an dieser Position.
? (Fragezeichen) Genau ein Zeichen in dieser Position.

Andere Zeichen als das Feldhalter sind Literalzeichen. Die Zeichenfolge "*t" sucht beispielsweise nach allen Namen, searchPatternpath die mit dem Buchstaben "t" enden. Die searchPattern Zeichenfolge "s*" sucht nach allen Namen, path die mit dem Buchstaben "s" beginnen.

searchPattern kann nicht in zwei Perioden ("..") enden oder zwei Punkte ("..") gefolgt von DirectorySeparatorChar oder AltDirectorySeparatorCharenthalten, und es kann auch keine ungültigen Zeichen enthalten. Sie können Abfragen für ungültige Zeichen mithilfe der GetInvalidPathChars-Methode ausführen.

Hinweis

Nur .NET Framework: Wenn Sie das Sternchen platzhalter in searchPattern verwenden und eine dreistellige Dateierweiterung angeben, z. B. "*.txt", gibt diese Methode auch Dateien mit Erweiterungen zurück, die mit der angegebenen Erweiterung beginnen . Das Suchmuster "*.xls" gibt beispielsweise sowohl "book.xls" als auch "book.xlsx" zurück. Dieses Verhalten tritt nur auf, wenn im Suchmuster ein Sternchen verwendet wird und die bereitgestellte Dateierweiterung genau drei Zeichen umfasst. Wenn Sie das Fragezeichenplatzzeichen irgendwo im Suchmuster verwenden, gibt diese Methode nur Dateien zurück, die genau mit der angegebenen Dateierweiterung übereinstimmen. In der folgenden Tabelle wird diese Anomalie in .NET Framework dargestellt.

Dateien im Verzeichnis Suchmuster .NET 5+ gibt zurück .NET Framework gibt zurück
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

Hinweis

Da diese Methode anhand von Dateinamen mit dem Dateinamenformat 8.3 und dem Langen Dateinamenformat überprüft wird, kann ein Suchmuster ähnlich "*1*.txt" unerwartete Dateinamen zurückgeben. Beispielsweise gibt das Suchmuster "*1*.txt" "longfilename.txt" zurück, da das entsprechende 8.3-Dateinamenformat "LONGFI~1.TXT" ist.

Die EnumerateFiles Methoden und GetFiles unterscheiden sich wie folgt: Wenn Sie EnumerateFilesverwenden, können Sie mit der Auflistung der Namen beginnen, bevor die gesamte Auflistung zurückgegeben wird. Wenn Sie verwenden GetFiles, müssen Sie warten, bis das gesamte Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können. Wenn Sie mit vielen Dateien und Verzeichnissen arbeiten, EnumerateFiles kann es daher effizienter sein.

Die Dateinamen enthalten den vollständigen Pfad.

Der path Parameter kann relative oder absolute Pfadinformationen angeben. Relative Pfadinformationen werden relativ zum aktuellen Arbeitsverzeichnis interpretiert. Informationen zum Abrufen des aktuellen Arbeitsverzeichnisses finden Sie unter GetCurrentDirectory.

Die Groß-/Kleinschreibung des path Parameters entspricht der des Dateisystems, auf dem der Code ausgeführt wird. Beispielsweise wird bei NTFS (dem Windows-Standarddateisystem) die Groß-/Kleinschreibung nicht beachtet und bei Linux-Dateisystemen die Groß-/Kleinschreibung beachtet.

Eine Liste allgemeiner E/A-Aufgaben finden Sie unter Allgemeine E/A-Aufgaben.

Weitere Informationen

Gilt für: