Directory.EnumerateFiles Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma coleção enumerável de nomes completos de arquivo que atendem ao critério especificado.
Sobrecargas
EnumerateFiles(String, String, SearchOption) |
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa em um caminho especificado e, opcionalmente, pesquisa subdiretórios. |
EnumerateFiles(String, String, EnumerationOptions) |
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa e a opções de enumeração em um caminho especificado e, opcionalmente, pesquisa subdiretórios. |
EnumerateFiles(String) |
Retorna uma coleção enumerável de nomes completos de arquivo em um caminho especificado. |
EnumerateFiles(String, String) |
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa em um caminho especificado. |
EnumerateFiles(String, String, SearchOption)
- Origem:
- Directory.cs
- Origem:
- Directory.cs
- Origem:
- Directory.cs
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa em um caminho especificado e, opcionalmente, pesquisa subdiretórios.
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)
Parâmetros
- path
- String
O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência com os nomes dos arquivos em path
. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
- searchOption
- SearchOption
Um dos valores de enumeração que especifica se a operação de pesquisa deve incluir somente o diretório atual ou todos os subdiretórios. O valor padrão é TopDirectoryOnly.
Retornos
Uma coleção enumerável de nomes completos (incluindo caminhos) para os arquivos no diretório especificado por path
e que correspondem à opção e ao padrão de pesquisa especificados.
Exceções
.NET Framework e versões do .NET Core anteriores à 2.1: path
é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
- ou -
searchPattern
não contém um padrão válido.
searchOption
não é um valor SearchOption válido.
path
é inválido, como referenciar uma unidade não mapeada.
path
é um nome de arquivo.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O chamador não tem a permissão necessária.
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir mostra como recuperar todos os arquivos de texto em um diretório e seus subdiretórios e movê-los para um novo diretório. Depois que os arquivos são movidos, eles não existem mais nos diretórios originais.
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
O exemplo a seguir enumera recursivamente todos os arquivos que têm a extensão .txt
, lê cada linha do arquivo e exibe a linha se ela contiver a cadeia de caracteres "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
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Exatamente um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a searchPattern
cadeia de caracteres "*t" pesquisa todos os nomes ao path
terminar com a letra "t". A searchPattern
cadeia de caracteres "s*" pesquisa todos os nomes no path
início com a letra "s".
Observação
.NET Framework somente: quando você usa o caractere curinga asterisco em searchPattern
e especifica uma extensão de arquivo de três caracteres, por exemplo, "*.txt", esse método também retorna arquivos com extensões que começam com a extensão especificada. Por exemplo, o padrão de pesquisa "*.xls" retorna "book.xls" e "book.xlsx". Esse comportamento só ocorrerá se um asterisco for usado no padrão de pesquisa e a extensão de arquivo fornecida for exatamente três caracteres. Se você usar o caractere curinga de ponto de interrogação em algum lugar no padrão de pesquisa, esse método retornará apenas os arquivos que correspondem exatamente à extensão de arquivo especificada. A tabela a seguir ilustra essa anomalia em .NET Framework.
Arquivos no diretório | Padrão de pesquisa | .NET 5+ retorna | .NET Framework retorna |
---|---|---|---|
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 | olá.txt | olá.txt |
searchPattern
não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.
Você pode especificar informações de caminho relativo com o path
parâmetro . As informações de caminho relativo são interpretadas como relativas ao diretório de trabalho atual, que você pode determinar usando o GetCurrentDirectory método .
Os EnumerateFiles métodos e GetFiles diferem da seguinte maneira: quando você usa EnumerateFiles, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada. Ao usar GetFiles, você deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateFiles pode ser mais eficiente.
A coleção retornada não é armazenada em cache. Cada chamada para o GetEnumerator na coleção inicia uma nova enumeração.
Aplica-se a
EnumerateFiles(String, String, EnumerationOptions)
- Origem:
- Directory.cs
- Origem:
- Directory.cs
- Origem:
- Directory.cs
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa e a opções de enumeração em um caminho especificado e, opcionalmente, pesquisa subdiretórios.
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)
Parâmetros
- path
- String
O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência com os nomes dos arquivos em path
. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
- enumerationOptions
- EnumerationOptions
Um objeto que descreve a configuração de pesquisa e enumeração a ser usada.
Retornos
Uma coleção enumerável de nomes completos (incluindo caminhos) para os arquivos no diretório especificado por path
e que correspondem às opções de enumeração e ao padrão de pesquisa especificados.
Exceções
.NET Framework e versões do .NET Core anteriores à 2.1: path
é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
- ou -
searchPattern
não contém um padrão válido.
searchOption
não é um valor SearchOption válido.
path
é inválido, como referenciar uma unidade não mapeada.
path
é um nome de arquivo.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O chamador não tem a permissão necessária.
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Exatamente um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a searchPattern
cadeia de caracteres "*t" pesquisa todos os nomes ao path
terminar com a letra "t". A searchPattern
cadeia de caracteres "s*" pesquisa todos os nomes no path
início com a letra "s".
Observação
.NET Framework somente: quando você usa o caractere curinga asterisco em searchPattern
e especifica uma extensão de arquivo de três caracteres, por exemplo, "*.txt", esse método também retorna arquivos com extensões que começam com a extensão especificada. Por exemplo, o padrão de pesquisa "*.xls" retorna "book.xls" e "book.xlsx". Esse comportamento só ocorrerá se um asterisco for usado no padrão de pesquisa e a extensão de arquivo fornecida for exatamente três caracteres. Se você usar o caractere curinga de ponto de interrogação em algum lugar no padrão de pesquisa, esse método retornará apenas os arquivos que correspondem exatamente à extensão de arquivo especificada. A tabela a seguir ilustra essa anomalia em .NET Framework.
Arquivos no diretório | Padrão de pesquisa | .NET 5+ retorna | .NET Framework retorna |
---|---|---|---|
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 | olá.txt | olá.txt |
searchPattern
não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.
Você pode especificar informações de caminho relativo com o path
parâmetro . As informações de caminho relativo são interpretadas como relativas ao diretório de trabalho atual, que você pode determinar usando o GetCurrentDirectory método .
Os EnumerateFiles métodos e GetFiles diferem da seguinte maneira: quando você usa EnumerateFiles, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada. Ao usar GetFiles, você deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateFiles pode ser mais eficiente.
A coleção retornada não é armazenada em cache. Cada chamada para o GetEnumerator na coleção inicia uma nova enumeração.
Aplica-se a
EnumerateFiles(String)
- Origem:
- Directory.cs
- Origem:
- Directory.cs
- Origem:
- Directory.cs
Retorna uma coleção enumerável de nomes completos de arquivo em um caminho especificado.
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)
Parâmetros
- path
- String
O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.
Retornos
Uma coleção enumerável de nomes completos (incluindo caminhos) para os arquivos no diretório especificado por path
.
Exceções
.NET Framework e versões do .NET Core anteriores à 2.1: path
é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
path
é null
.
path
é inválido, como referenciar uma unidade não mapeada.
path
é um nome de arquivo.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O chamador não tem a permissão necessária.
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir mostra como recuperar todos os arquivos em um diretório e movê-los para um novo diretório. Depois que os arquivos são movidos, eles não existem mais no diretório original.
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
O exemplo a seguir enumera os arquivos no diretório especificado, lê cada linha do arquivo e exibe a linha se ela contiver a cadeia de caracteres "Europa".
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
Comentários
Você pode especificar informações de caminho relativo com o path
parâmetro . As informações de caminho relativo são interpretadas como relativas ao diretório de trabalho atual, que você pode determinar usando o GetCurrentDirectory método .
Os EnumerateFiles métodos e GetFiles diferem da seguinte maneira: quando você usa EnumerateFiles, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada. Ao usar GetFiles, você deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateFiles pode ser mais eficiente.
A coleção retornada não é armazenada em cache; cada chamada para o GetEnumerator na coleção iniciará uma nova enumeração.
Aplica-se a
EnumerateFiles(String, String)
- Origem:
- Directory.cs
- Origem:
- Directory.cs
- Origem:
- Directory.cs
Retorna uma coleção enumerável de nomes completos de arquivo que correspondem a um padrão de pesquisa em um caminho especificado.
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)
Parâmetros
- path
- String
O caminho relativo ou absoluto para o diretório a ser pesquisado. Esta cadeia de caracteres não diferencia maiúsculas de minúsculas.
- searchPattern
- String
A cadeia de caracteres de pesquisa para correspondência com os nomes dos arquivos em path
. Esse parâmetro pode conter uma combinação de caracteres curinga (* e ?) e caminho de literal, mas não dá suporte a expressões regulares.
Retornos
Uma coleção enumerável de nomes completos (incluindo caminhos) para os arquivos no diretório especificado por path
e que correspondem ao padrão de pesquisa especificado.
Exceções
.NET Framework e versões do .NET Core anteriores à 2.1: path
é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().
- ou -
searchPattern
não contém um padrão válido.
path
é inválido, como referenciar uma unidade não mapeada.
path
é um nome de arquivo.
O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.
O chamador não tem a permissão necessária.
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir mostra como recuperar todos os arquivos de texto em um diretório e movê-los para um novo diretório. Depois que os arquivos são movidos, eles não existem mais no diretório original.
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
O exemplo a seguir enumera os arquivos no diretório especificado que têm uma extensão ".txt", lê cada linha do arquivo e exibe a linha se ela contiver a cadeia de caracteres "Europa".
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
Comentários
searchPattern
pode ser uma combinação de caracteres literais e curinga, mas não dá suporte a expressões regulares. Os especificadores curinga a seguir são permitidos em searchPattern
.
Especificador curinga | Corresponde a |
---|---|
* (asterisco) | Zero ou mais caracteres nessa posição. |
? (ponto de interrogação) | Exatamente um caractere nessa posição. |
Caracteres diferentes do curinga são caracteres literais. Por exemplo, a searchPattern
cadeia de caracteres "*t" pesquisa todos os nomes ao path
terminar com a letra "t". A searchPattern
cadeia de caracteres "s*" pesquisa todos os nomes no path
início com a letra "s".
Observação
.NET Framework somente: quando você usa o caractere curinga asterisco em searchPattern
e especifica uma extensão de arquivo de três caracteres, por exemplo, "*.txt", esse método também retorna arquivos com extensões que começam com a extensão especificada. Por exemplo, o padrão de pesquisa "*.xls" retorna "book.xls" e "book.xlsx". Esse comportamento só ocorrerá se um asterisco for usado no padrão de pesquisa e a extensão de arquivo fornecida for exatamente três caracteres. Se você usar o caractere curinga de ponto de interrogação em algum lugar no padrão de pesquisa, esse método retornará apenas os arquivos que correspondem exatamente à extensão de arquivo especificada. A tabela a seguir ilustra essa anomalia em .NET Framework.
Arquivos no diretório | Padrão de pesquisa | .NET 5+ retorna | .NET Framework retorna |
---|---|---|---|
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 | olá.txt | olá.txt |
searchPattern
não pode terminar em dois períodos ("..") ou conter dois períodos ("..") seguidos por DirectorySeparatorChar ou AltDirectorySeparatorChar, nem pode conter caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars.
Você pode especificar informações de caminho relativo com o path
parâmetro . As informações de caminho relativo são interpretadas como relativas ao diretório de trabalho atual, que você pode determinar usando o GetCurrentDirectory método .
Os EnumerateFiles métodos e GetFiles diferem da seguinte maneira: quando você usa EnumerateFiles, você pode começar a enumerar a coleção de nomes antes que toda a coleção seja retornada; quando você usa GetFiles, deve aguardar que toda a matriz de nomes seja retornada antes de poder acessar a matriz. Portanto, quando você está trabalhando com muitos arquivos e diretórios, EnumerateFiles pode ser mais eficiente.
A coleção retornada não é armazenada em cache. Cada chamada para o GetEnumerator na coleção inicia uma nova enumeração.