Directory.GetFiles Metoda
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca nazwy plików spełniających określone kryteria.
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. |
- Ź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
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
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ż
- We/wy pliku i strumienia
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku
Dotyczy
.NET 9 i inne wersje
Produkt | Wersje |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
- Ź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
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
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ż
- We/Wy pliku i strumienia
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku
Dotyczy
.NET 9 i inne wersje
Produkt | Wersje |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
- Ź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
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
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
.NET 9 i inne wersje
Produkt | Wersje |
---|---|
.NET | Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Standard | 2.1 |
- Ź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
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.
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ż
- We/Wy pliku i strumienia
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku
Dotyczy
.NET 9 i inne wersje
Produkt | Wersje |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
UWP | 10.0 |
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: