Directory.EnumerateFiles Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí výčet kolekcí úplných názvů souborů, které splňují zadaná kritéria.
Přetížení
EnumerateFiles(String, String, SearchOption) |
Vrátí výčet kolekcí úplných názvů souborů, které odpovídají vzoru hledání v zadané cestě, a volitelně prohledá podadresáře. |
EnumerateFiles(String, String, EnumerationOptions) |
Vrátí výčtovou kolekci úplných názvů souborů, které odpovídají vzoru hledání a možnostem výčtu v zadané cestě, a volitelně prohledá podadresáře. |
EnumerateFiles(String) |
Vrátí výčtovou kolekci úplných názvů souborů v zadané cestě. |
EnumerateFiles(String, String) |
Vrátí výčet kolekcí úplných názvů souborů, které odpovídají vzoru hledání v zadané cestě. |
EnumerateFiles(String, String, SearchOption)
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
Vrátí výčet kolekcí úplných názvů souborů, které odpovídají vzoru hledání v zadané cestě, a volitelně prohledá podadresáře.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)
Parametry
- path
- String
Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy souborů v path
souboru . Tento parametr může obsahovat kombinaci platných literálových cest a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
- searchOption
- SearchOption
Jedna z hodnot výčtu, která určuje, zda má operace hledání obsahovat pouze aktuální adresář nebo by měla zahrnovat všechny podadresáře. Výchozí hodnota je TopDirectoryOnly.
Návraty
Výčetná kolekce úplných jmen (včetně cest) pro soubory v adresáři určeném a path
které odpovídají zadanému vzoru hledání a možnosti hledání.
Výjimky
.NET Framework a .NET Core verze starší než 2.1: path
je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars() .
-nebo-
searchPattern
neobsahuje platný vzor.
searchOption
není platná SearchOption hodnota.
path
je neplatný, například odkaz na nenamapovanou jednotku.
path
je název souboru.
Zadaná cesta, název souboru nebo kombinace překračuje maximální délku definovanou systémem.
Volající nemá požadované oprávnění.
Volající nemá požadované oprávnění.
Příklady
Následující příklad ukazuje, jak načíst všechny textové soubory v adresáři a jeho podadresářích a přesunout je do nového adresáře. Po přesunutí už soubory v původních adresářích neexistují.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Následující příklad rekurzivně vytvoří výčet všech souborů, které mají příponu .txt
, přečte každý řádek souboru a zobrazí řádek, pokud obsahuje řetězec "Microsoft".
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
open System
open System.IO
try
// Set a variable to the My Documents path.
let docPath =
Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let files =
query {
for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines file do
where (line.Contains "Microsoft")
select {| File = file; Line = line |}
}
for f in files do
printfn $"{f.File}\t{f.Line}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
Sub Main()
Try
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(chkFile)
Where line.Contains("Microsoft")
Select New With {.curFile = chkFile, .curLine = line}
For Each f In files
Console.WriteLine($"{f.File}\t{f.Line}")
Next
Console.WriteLine($"{files.Count} files found.")
Catch uAEx As UnauthorizedAccessException
Console.WriteLine(uAEx.Message)
Catch pathEx As PathTooLongException
Console.WriteLine(pathEx.Message)
End Try
End Sub
End Module
Poznámky
searchPattern
může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Přesně jeden znak v této pozici. |
Jiné znaky než zástupný znak jsou literálové znaky. Například searchPattern
řetězec "*t" vyhledá všechna jména končící path
písmenem "t". Řetězec searchPattern
"s*" vyhledá všechna jména začínající path
písmenem "s".
Poznámka
Pouze rozhraní .NET Framework: Pokud použijete zástupný znak hvězdičky v searchPattern
a zadáte tříznakovou příponu souboru, například "*.txt", vrátí tato metoda také soubory s příponami, které začínají zadanou příponou. Například vzor hledání "*.xls" vrátí "book.xls" i "book.xlsx". K tomuto chování dochází pouze v případě, že se ve vzoru hledání používá hvězdička a zadaná přípona souboru má přesně tři znaky. Pokud použijete zástupný znak otazníku někde ve vzoru hledání, vrátí tato metoda pouze soubory, které přesně odpovídají zadané příponě souboru. Následující tabulka znázorňuje tuto anomálii v rozhraní .NET Framework.
Soubory v adresáři | Způsob hledání | Vrátí se .NET 5 nebo novější. | Vrátí rozhraní .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 |
searchPattern
nesmí končit dvěma tečkami ("..") nebo obsahovat dvě tečky ("..") za nimi DirectorySeparatorChar nebo AltDirectorySeparatorChar, ani nesmí obsahovat neplatné znaky. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars .
Pomocí parametru můžete zadat informace o relativní cestě path
. Informace o relativní cestě jsou interpretovány jako relativní vzhledem k aktuálnímu pracovnímu adresáři, který můžete určit pomocí GetCurrentDirectory metody .
Metody EnumerateFiles a GetFiles se liší následujícím způsobem: Při použití EnumerateFilesmůžete spustit výčet kolekce názvů před vrácením celé kolekce. Pokud použijete GetFiles, musíte počkat, až se vrátí celé pole názvů, abyste měli přístup k matici. Proto při práci s mnoha soubory a adresáři EnumerateFiles může být efektivnější.
Vrácená kolekce není uložena do mezipaměti. Každé volání GetEnumerator v kolekci zahájí nový výčet.
Platí pro
EnumerateFiles(String, String, EnumerationOptions)
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
Vrátí výčtovou kolekci úplných názvů souborů, které odpovídají vzoru hledání a možnostem výčtu v zadané cestě, a volitelně prohledá podadresáře.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)
Parametry
- path
- String
Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy souborů v path
souboru . Tento parametr může obsahovat kombinaci platných literálových cest a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
- enumerationOptions
- EnumerationOptions
Objekt, který popisuje konfiguraci vyhledávání a výčtu, která se má použít.
Návraty
Výčtovou kolekci úplných názvů (včetně cest) pro soubory v adresáři určeném a path
, které odpovídají zadanému vzoru hledání a možnostem výčtu.
Výjimky
.NET Framework a .NET Core verze starší než 2.1: path
je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars() .
-nebo-
searchPattern
neobsahuje platný vzor.
searchOption
není platná SearchOption hodnota.
path
je neplatný, například odkaz na nenamapovanou jednotku.
path
je název souboru.
Zadaná cesta, název souboru nebo kombinace překračuje maximální délku definovanou systémem.
Volající nemá požadované oprávnění.
Poznámky
searchPattern
může být kombinací literálu a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Přesně jeden znak na této pozici. |
Jiné znaky než zástupný znak jsou literální znaky. Například searchPattern
řetězec "*t" vyhledá všechna jména path
končící písmenem "t". Řetězec searchPattern
"s*" vyhledá všechna jména path
začínající písmenem "s".
Poznámka
Pouze rozhraní .NET Framework: Pokud použijete zástupný znak hvězdička v searchPattern
a zadáte tříznakovou příponu souboru, například "*.txt", vrátí tato metoda také soubory s příponami, které začínají zadanou příponou. Například vzorec hledání "*.xls" vrátí "book.xls" i "book.xlsx". K tomuto chování dochází pouze v případě, že je ve vzoru hledání použita hvězdička a zadanou příponou souboru jsou přesně tři znaky. Pokud použijete zástupný znak otazníku někde ve vzoru hledání, vrátí tato metoda pouze soubory, které přesně odpovídají zadané příponě souboru. Následující tabulka znázorňuje tuto anomálii v rozhraní .NET Framework.
Soubory v adresáři | Způsob hledání | Vrácení .NET 5+ | Rozhraní .NET Framework vrací |
---|---|---|---|
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 |
searchPattern
nesmí končit dvěma tečkami (..) nebo obsahovat dvě tečky (..) následované tečkami DirectorySeparatorChar nebo AltDirectorySeparatorChara nesmí obsahovat žádné neplatné znaky. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars
Pomocí parametru můžete zadat relativní informace o cestě path
. Informace o relativní cestě jsou interpretovány jako relativní vzhledem k aktuálnímu pracovnímu adresáři, který můžete určit pomocí GetCurrentDirectory metody .
Metody EnumerateFiles a GetFiles se liší následujícím způsobem: Pokud použijete EnumerateFiles, můžete začít s vytvářením výčtu kolekce názvů před vrácením celé kolekce. Při použití příkazu GetFilesmusíte počkat na vrácení celého pole názvů, abyste mohli získat přístup k poli. Proto, když pracujete s mnoha soubory a adresáři, EnumerateFiles může být efektivnější.
Vrácená kolekce není uložena v mezipaměti. Každé volání GetEnumerator na kolekci spustí nový výčet.
Platí pro
EnumerateFiles(String)
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
Vrátí výčtovou kolekci úplných názvů souborů v zadané cestě.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)
Parametry
- path
- String
Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.
Návraty
Výčtovou kolekci celých jmen (včetně cest) pro soubory v adresáři určeném parametrem path
.
Výjimky
.NET Framework a .NET Core verze starší než 2.1: path
je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars()
path
je null
.
path
je neplatný, například odkaz na nenamapovanou jednotku.
path
je název souboru.
Zadaná cesta, název souboru nebo kombinace překračují maximální délku definovanou systémem.
Volající nemá požadované oprávnění.
Volající nemá požadované oprávnění.
Příklady
Následující příklad ukazuje, jak načíst všechny soubory v adresáři a přesunout je do nového adresáře. Po přesunutí už soubory v původním adresáři neexistují.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles sourceDirectory
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Následující příklad vytvoří výčet souborů v zadaném adresáři, přečte každý řádek souboru a zobrazí řádek, pokud obsahuje řetězec "Evropa".
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all files containing the word 'Europe'.
var files = from file in
Directory.EnumerateFiles(@"\\archives1\library\")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All files containing the word 'Europe'.
let files =
Directory.EnumerateFiles @"\\archives1\library\"
|> Seq.filter (fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
Poznámky
Pomocí parametru můžete zadat relativní informace o cestě path
. Informace o relativní cestě jsou interpretovány jako relativní vzhledem k aktuálnímu pracovnímu adresáři, který můžete určit pomocí GetCurrentDirectory metody .
Metody EnumerateFiles a GetFiles se liší následujícím způsobem: Pokud použijete EnumerateFiles, můžete začít s vytvářením výčtu kolekce názvů před vrácením celé kolekce. Při použití příkazu GetFilesmusíte počkat na vrácení celého pole názvů, abyste mohli získat přístup k poli. Proto, když pracujete s mnoha soubory a adresáři, EnumerateFiles může být efektivnější.
Vrácená kolekce není uložena v mezipaměti; každé volání GetEnumerator na kolekci spustí nový výčet.
Platí pro
EnumerateFiles(String, String)
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
- Zdroj:
- Directory.cs
Vrátí výčet kolekcí úplných názvů souborů, které odpovídají vzoru hledání v zadané cestě.
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)
Parametry
- path
- String
Relativní nebo absolutní cesta k adresáři, který chcete vyhledat. Tento řetězec neodlišuje velká a malá písmena.
- searchPattern
- String
Hledaný řetězec, který se má shodovat s názvy souborů v path
. Tento parametr může obsahovat kombinaci platné literálové cesty a zástupných znaků (* a ?), ale nepodporuje regulární výrazy.
Návraty
Výčetná kolekce úplných jmen (včetně cest) pro soubory v adresáři určeném a path
které odpovídají zadanému vzoru hledání.
Výjimky
.NET Framework a .NET Core verze starší než 2.1: path
je řetězec nulové délky, obsahuje pouze prázdné znaky nebo obsahuje neplatné znaky. Na neplatné znaky se můžete dotazovat pomocí metody .GetInvalidPathChars()
-nebo-
searchPattern
neobsahuje platný vzor.
path
je neplatný, například odkaz na nenamapovanou jednotku.
path
je název souboru.
Zadaná cesta, název souboru nebo kombinace překračují maximální délku definovanou systémem.
Volající nemá požadované oprávnění.
Volající nemá požadované oprávnění.
Příklady
Následující příklad ukazuje, jak načíst všechny textové soubory v adresáři a přesunout je do nového adresáře. Po přesunutí už soubory v původním adresáři neexistují.
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
Následující příklad vytvoří výčet souborů v zadaném adresáři, které mají příponu ".txt", přečte každý řádek souboru a zobrazí řádek, pokud obsahuje řetězec "Evropa".
using System;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all .txt files containing the word 'Europe'.
var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
where file.ToLower().Contains("europe")
select file;
foreach (var file in files)
{
Console.WriteLine("{0}", file);
}
Console.WriteLine("{0} files found.", files.Count<string>().ToString());
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
}
open System
open System.IO
try
// All .txt files containing the word 'Europe'.
let files =
Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
|> Seq.filter(fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all .txt files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
Poznámky
searchPattern
může být kombinací literálů a zástupných znaků, ale nepodporuje regulární výrazy. V systému jsou povoleny následující specifikátory zástupných searchPattern
znaků.
Specifikátor zástupných znaků | Shody |
---|---|
* (hvězdička) | Na této pozici není žádný nebo více znaků. |
? (otazník) | Přesně jeden znak na této pozici. |
Jiné znaky než zástupný znak jsou literální znaky. Například searchPattern
řetězec "*t" vyhledá všechna jména path
končící písmenem "t". Řetězec searchPattern
"s*" vyhledá všechna jména path
začínající písmenem "s".
Poznámka
Pouze rozhraní .NET Framework: Pokud použijete zástupný znak hvězdička v searchPattern
a zadáte tříznakovou příponu souboru, například "*.txt", vrátí tato metoda také soubory s příponami, které začínají zadanou příponou. Například vzorec hledání "*.xls" vrátí "book.xls" i "book.xlsx". K tomuto chování dochází pouze v případě, že je ve vzoru hledání použita hvězdička a zadanou příponou souboru jsou přesně tři znaky. Pokud použijete zástupný znak otazníku někde ve vzoru hledání, vrátí tato metoda pouze soubory, které přesně odpovídají zadané příponě souboru. Následující tabulka znázorňuje tuto anomálii v rozhraní .NET Framework.
Soubory v adresáři | Způsob hledání | Vrácení .NET 5+ | Rozhraní .NET Framework vrací |
---|---|---|---|
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 |
searchPattern
nesmí končit dvěma tečkami ("..") nebo obsahovat dvě tečky ("..") za nimi DirectorySeparatorChar nebo AltDirectorySeparatorChar, ani nesmí obsahovat neplatné znaky. Pomocí metody se můžete dotazovat na neplatné znaky GetInvalidPathChars .
Pomocí parametru můžete zadat informace o relativní cestě path
. Informace o relativní cestě jsou interpretovány jako relativní vzhledem k aktuálnímu pracovnímu adresáři, který můžete určit pomocí GetCurrentDirectory metody .
Metody EnumerateFiles a GetFiles se liší následujícím způsobem: Při použití EnumerateFilesmůžete spustit výčet kolekce názvů před vrácením celé kolekce; při použití GetFilesmusíte počkat, až se vrátí celé pole názvů, abyste měli přístup k matici. Proto při práci s mnoha soubory a adresáři EnumerateFiles může být efektivnější.
Vrácená kolekce není uložena do mezipaměti. Každé volání GetEnumerator v kolekci zahájí nový výčet.