DirectoryInfo.GetFiles Metoda
Definicja
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 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 searchPattern
pliku . 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 searchPattern
pliku . 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:
Zobacz też
- We/wy plików i Stream
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku
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ż
- We/wy plików i Stream
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku
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 searchPattern
pliku . 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ż
- We/wy plików i Stream
- Instrukcje: Odczytywanie tekstu z pliku
- Instrukcje: Zapisywanie tekstu w pliku