Directory.EnumerateFiles Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne une collection énumérable de noms de fichiers complets qui répondent à des critères spécifiés.
Surcharges
EnumerateFiles(String, String, SearchOption) |
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche dans un chemin spécifié, et effectue éventuellement des recherches dans les sous-répertoires. |
EnumerateFiles(String, String, EnumerationOptions) |
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche et à des options d’énumération dans un chemin spécifié, et recherche éventuellement dans les sous-répertoires. |
EnumerateFiles(String) |
Retourne une collection énumérable de noms de fichiers complets dans un chemin spécifié. |
EnumerateFiles(String, String) |
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche dans un chemin spécifié. |
EnumerateFiles(String, String, SearchOption)
- Source:
- Directory.cs
- Source:
- Directory.cs
- Source:
- Directory.cs
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche dans un chemin spécifié, et effectue éventuellement des recherches dans les sous-répertoires.
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)
Paramètres
- path
- String
Le chemin d’accès relatif ou absolu du répertoire où effectuer la recherche. Cette chaîne n'est pas sensible à la casse.
- searchPattern
- String
Chaîne recherchée à trouver parmi les noms de fichiers dans path
. Ce paramètre peut contenir une combinaison d’un chemin littéral valide et de caractères génériques (* et ?), mais il ne prend pas en charge les expressions régulières.
- searchOption
- SearchOption
Une des valeurs d'énumération qui spécifie si l'opération de recherche doit inclure seulement le répertoire actuel ou si elle doit inclure tous les sous-répertoires. La valeur par défaut est TopDirectoryOnly.
Retours
Collection énumérable des noms complets (chemins compris) pour les fichiers du répertoire spécifié par path
et qui correspondent au modèle et à l’option de recherche spécifiés.
Exceptions
.NET Framework et .NET Core versions antérieures à 2.1 : path
est une chaîne de longueur nulle, contient uniquement des espaces blancs ou contient des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().
- ou -
searchPattern
ne contient pas un modèle valide.
searchOption
n’est pas une valeur de SearchOption valide.
path
n’est pas valide, notamment s’il fait référence à un lecteur non mappé.
path
est un nom de fichier.
Le chemin d’accès et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.
L'appelant n'a pas l'autorisation requise.
L'appelant n'a pas l'autorisation requise.
Exemples
L’exemple suivant montre comment récupérer tous les fichiers texte d’un répertoire et de ses sous-répertoires, puis les déplacer vers un nouveau répertoire. Une fois les fichiers déplacés, ils n’existent plus dans les répertoires d’origine.
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
L’exemple suivant énumère de manière récursive tous les fichiers qui ont l’extension .txt
, lit chaque ligne du fichier et affiche la ligne si elle contient la chaîne « 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
Remarques
searchPattern
peut être une combinaison de caractères littéral et génériques, mais elle ne prend pas en charge les expressions régulières. Les spécificateurs génériques suivants sont autorisés dans searchPattern
.
Spécificateur générique | Correspond à |
---|---|
* (astérisque) | Zéro ou plus caractères dans cette position. |
? (point d’interrogation) | Exactement un caractère dans cette position. |
Les caractères autres que le caractère générique sont des caractères littérals. Par exemple, la searchPattern
chaîne « *t » recherche tous les noms se path
terminant par la lettre « t ». La searchPattern
chaîne « s* » recherche tous les noms en path
commençant par la lettre « s ».
Notes
.NET Framework uniquement : Lorsque vous utilisez le caractère générique d’astérisque dans searchPattern
et que vous spécifiez une extension de fichier à trois caractères, par exemple, « *.txt », cette méthode retourne également des fichiers avec des extensions qui commencent par l’extension spécifiée. Par exemple, le modèle de recherche « *.xls » retourne à la fois « book.xls » et « book.xlsx ». Ce comportement se produit uniquement si un astérisque est utilisé dans le modèle de recherche et si l’extension de fichier fournie contient exactement trois caractères. Si vous utilisez le caractère générique de point d’interrogation quelque part dans le modèle de recherche, cette méthode retourne uniquement les fichiers qui correspondent exactement à l’extension de fichier spécifiée. Le tableau suivant illustre cette anomalie dans .NET Framework.
Fichiers dans le répertoire | Modèle de recherche | .NET 5+ retourne | .NET Framework retourne |
---|---|---|---|
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
ne peut pas se terminer par deux points (« .. ») ou contenir deux points (« .. ») suivis de DirectorySeparatorChar ou AltDirectorySeparatorChar, et il ne peut pas non plus contenir des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars.
Vous pouvez spécifier des informations relatives sur le chemin d’accès avec le path
paramètre . Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel, que vous pouvez déterminer à l’aide de la GetCurrentDirectory méthode .
Les EnumerateFiles méthodes et GetFiles diffèrent comme suit : lorsque vous utilisez EnumerateFiles, vous pouvez commencer à énumérer la collection de noms avant que la collection entière ne soit retournée. Lorsque vous utilisez GetFiles, vous devez attendre que l’ensemble du tableau de noms soit retourné avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec de nombreux fichiers et répertoires, EnumerateFiles peut être plus efficace.
La collection retournée n’est pas mise en cache. Chaque appel au GetEnumerator sur la collection démarre une nouvelle énumération.
S’applique à
EnumerateFiles(String, String, EnumerationOptions)
- Source:
- Directory.cs
- Source:
- Directory.cs
- Source:
- Directory.cs
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche et à des options d’énumération dans un chemin spécifié, et recherche éventuellement dans les sous-répertoires.
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)
Paramètres
- path
- String
Le chemin d’accès relatif ou absolu du répertoire où effectuer la recherche. Cette chaîne n'est pas sensible à la casse.
- searchPattern
- String
Chaîne recherchée à trouver parmi les noms de fichiers dans path
. Ce paramètre peut contenir une combinaison d’un chemin littéral valide et de caractères génériques (* et ?), mais il ne prend pas en charge les expressions régulières.
- enumerationOptions
- EnumerationOptions
Objet qui décrit la configuration de recherche et d’énumération à utiliser.
Retours
Collection énumérable des noms complets (chemins compris) pour les fichiers du répertoire spécifié par path
et qui correspondent au modèle de recherche et aux options d’énumération spécifiés.
Exceptions
.NET Framework et .NET Core versions antérieures à 2.1 : path
est une chaîne de longueur nulle, contient uniquement des espaces blancs ou contient des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().
- ou -
searchPattern
ne contient pas un modèle valide.
searchOption
n’est pas une valeur de SearchOption valide.
path
n’est pas valide, notamment s’il fait référence à un lecteur non mappé.
path
est un nom de fichier.
Le chemin d’accès et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.
L'appelant n'a pas l'autorisation requise.
Remarques
searchPattern
peut être une combinaison de caractères littéral et génériques, mais elle ne prend pas en charge les expressions régulières. Les spécificateurs génériques suivants sont autorisés dans searchPattern
.
Spécificateur générique | Correspond à |
---|---|
* (astérisque) | Zéro ou plus caractères dans cette position. |
? (point d’interrogation) | Exactement un caractère dans cette position. |
Les caractères autres que le caractère générique sont des caractères littérals. Par exemple, la searchPattern
chaîne « *t » recherche tous les noms se path
terminant par la lettre « t ». La searchPattern
chaîne « s* » recherche tous les noms en path
commençant par la lettre « s ».
Notes
.NET Framework uniquement : Lorsque vous utilisez le caractère générique d’astérisque dans searchPattern
et que vous spécifiez une extension de fichier à trois caractères, par exemple, « *.txt », cette méthode retourne également des fichiers avec des extensions qui commencent par l’extension spécifiée. Par exemple, le modèle de recherche « *.xls » retourne à la fois « book.xls » et « book.xlsx ». Ce comportement se produit uniquement si un astérisque est utilisé dans le modèle de recherche et si l’extension de fichier fournie contient exactement trois caractères. Si vous utilisez le caractère générique de point d’interrogation quelque part dans le modèle de recherche, cette méthode retourne uniquement les fichiers qui correspondent exactement à l’extension de fichier spécifiée. Le tableau suivant illustre cette anomalie dans .NET Framework.
Fichiers dans le répertoire | Modèle de recherche | .NET 5+ retourne | .NET Framework retourne |
---|---|---|---|
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
ne peut pas se terminer par deux points (« .. ») ou contenir deux points (« .. ») suivis de DirectorySeparatorChar ou AltDirectorySeparatorChar, et il ne peut pas non plus contenir des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars.
Vous pouvez spécifier des informations relatives sur le chemin d’accès avec le path
paramètre . Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel, que vous pouvez déterminer à l’aide de la GetCurrentDirectory méthode .
Les EnumerateFiles méthodes et GetFiles diffèrent comme suit : lorsque vous utilisez EnumerateFiles, vous pouvez commencer à énumérer la collection de noms avant que la collection entière ne soit retournée. Lorsque vous utilisez GetFiles, vous devez attendre que l’ensemble du tableau de noms soit retourné avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec de nombreux fichiers et répertoires, EnumerateFiles peut être plus efficace.
La collection retournée n’est pas mise en cache. Chaque appel au GetEnumerator sur la collection démarre une nouvelle énumération.
S’applique à
EnumerateFiles(String)
- Source:
- Directory.cs
- Source:
- Directory.cs
- Source:
- Directory.cs
Retourne une collection énumérable de noms de fichiers complets dans un chemin spécifié.
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)
Paramètres
- path
- String
Le chemin d’accès relatif ou absolu du répertoire où effectuer la recherche. Cette chaîne n'est pas sensible à la casse.
Retours
Collection énumérable des noms d’affichage (chemins d’accès compris) pour les fichiers du répertoire spécifié par path
.
Exceptions
.NET Framework et .NET Core versions antérieures à 2.1 : path
est une chaîne de longueur nulle, contient uniquement des espaces blancs ou contient des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().
path
a la valeur null
.
path
n’est pas valide, notamment s’il fait référence à un lecteur non mappé.
path
est un nom de fichier.
Le chemin d’accès et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.
L'appelant n'a pas l'autorisation requise.
L'appelant n'a pas l'autorisation requise.
Exemples
L’exemple suivant montre comment récupérer tous les fichiers d’un répertoire et les déplacer vers un nouveau répertoire. Une fois les fichiers déplacés, ils n’existent plus dans le répertoire d’origine.
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
L’exemple suivant énumère les fichiers dans le répertoire spécifié, lit chaque ligne du fichier et affiche la ligne si elle contient la chaîne « Europe ».
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
Remarques
Vous pouvez spécifier des informations relatives sur le chemin d’accès avec le path
paramètre . Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel, que vous pouvez déterminer à l’aide de la GetCurrentDirectory méthode .
Les EnumerateFiles méthodes et GetFiles diffèrent comme suit : lorsque vous utilisez EnumerateFiles, vous pouvez commencer à énumérer la collection de noms avant que la collection entière ne soit retournée. Lorsque vous utilisez GetFiles, vous devez attendre que l’ensemble du tableau de noms soit retourné avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec de nombreux fichiers et répertoires, EnumerateFiles peut être plus efficace.
La collection retournée n’est pas mise en cache ; chaque appel à sur GetEnumerator la collection démarre une nouvelle énumération.
S’applique à
EnumerateFiles(String, String)
- Source:
- Directory.cs
- Source:
- Directory.cs
- Source:
- Directory.cs
Retourne une collection énumérable des noms de fichiers complets qui correspondent à un modèle de recherche dans un chemin spécifié.
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)
Paramètres
- path
- String
Le chemin d’accès relatif ou absolu du répertoire où effectuer la recherche. Cette chaîne n'est pas sensible à la casse.
- searchPattern
- String
Chaîne recherchée à trouver parmi les noms de fichiers dans path
. Ce paramètre peut contenir une combinaison d’un chemin littéral valide et de caractères génériques (* et ?), mais il ne prend pas en charge les expressions régulières.
Retours
Collection énumérable des noms complets (chemins d’accès compris) pour les fichiers du répertoire spécifié par path
et qui correspondent au modèle de recherche spécifié.
Exceptions
.NET Framework et .NET Core versions antérieures à 2.1 : path
est une chaîne de longueur nulle, contient uniquement des espaces blancs ou contient des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars().
- ou -
searchPattern
ne contient pas un modèle valide.
path
n’est pas valide, notamment s’il fait référence à un lecteur non mappé.
path
est un nom de fichier.
Le chemin d’accès et/ou le nom de fichier spécifiés dépassent la longueur maximale définie par le système.
L'appelant n'a pas l'autorisation requise.
L'appelant n'a pas l'autorisation requise.
Exemples
L’exemple suivant montre comment récupérer tous les fichiers texte d’un répertoire et les déplacer vers un nouveau répertoire. Une fois les fichiers déplacés, ils n’existent plus dans le répertoire d’origine.
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
L’exemple suivant énumère les fichiers du répertoire spécifié qui ont une extension « .txt », lit chaque ligne du fichier et affiche la ligne si elle contient la chaîne « Europe ».
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
Remarques
searchPattern
peut être une combinaison de caractères littéral et génériques, mais elle ne prend pas en charge les expressions régulières. Les spécificateurs génériques suivants sont autorisés dans searchPattern
.
Spécificateur générique | Correspond à |
---|---|
* (astérisque) | Zéro ou plus caractères dans cette position. |
? (point d’interrogation) | Exactement un caractère dans cette position. |
Les caractères autres que le caractère générique sont des caractères littérals. Par exemple, la searchPattern
chaîne « *t » recherche tous les noms se path
terminant par la lettre « t ». La searchPattern
chaîne « s* » recherche tous les noms en path
commençant par la lettre « s ».
Notes
.NET Framework uniquement : Lorsque vous utilisez le caractère générique d’astérisque dans searchPattern
et que vous spécifiez une extension de fichier à trois caractères, par exemple, « *.txt », cette méthode retourne également des fichiers avec des extensions qui commencent par l’extension spécifiée. Par exemple, le modèle de recherche « *.xls » retourne à la fois « book.xls » et « book.xlsx ». Ce comportement se produit uniquement si un astérisque est utilisé dans le modèle de recherche et si l’extension de fichier fournie contient exactement trois caractères. Si vous utilisez le caractère générique de point d’interrogation quelque part dans le modèle de recherche, cette méthode retourne uniquement les fichiers qui correspondent exactement à l’extension de fichier spécifiée. Le tableau suivant illustre cette anomalie dans .NET Framework.
Fichiers dans le répertoire | Modèle de recherche | .NET 5+ retourne | .NET Framework retourne |
---|---|---|---|
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
ne peut pas se terminer par deux points (« .. ») ou contenir deux points (« .. ») suivis de DirectorySeparatorChar ou AltDirectorySeparatorChar, et il ne peut pas non plus contenir des caractères non valides. Vous pouvez rechercher les caractères non valides à l’aide de la méthode GetInvalidPathChars.
Vous pouvez spécifier des informations relatives sur le chemin d’accès avec le path
paramètre . Les informations relatives au chemin d’accès sont interprétées comme relatives au répertoire de travail actuel, que vous pouvez déterminer à l’aide de la GetCurrentDirectory méthode .
Les EnumerateFiles méthodes et GetFiles diffèrent comme suit : lorsque vous utilisez EnumerateFiles, vous pouvez commencer à énumérer la collection de noms avant que l’ensemble de la collection soit retourné ; lorsque vous utilisez GetFiles, vous devez attendre que l’ensemble du tableau de noms soit retourné avant de pouvoir accéder au tableau. Par conséquent, lorsque vous travaillez avec de nombreux fichiers et répertoires, EnumerateFiles peut être plus efficace.
La collection retournée n’est pas mise en cache. Chaque appel au GetEnumerator sur la collection démarre une nouvelle énumération.