Directory.EnumerateFiles Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen ölçütleri karşılayan tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür.
Aşırı Yüklemeler
EnumerateFiles(String, String, SearchOption) |
Belirtilen yoldaki bir arama deseni ile eşleşen ve isteğe bağlı olarak alt dizinleri arayan tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür. |
EnumerateFiles(String, String, EnumerationOptions) |
Belirtilen yoldaki bir arama deseni ve numaralandırma seçenekleriyle eşleşen ve isteğe bağlı olarak alt dizinleri arayan tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür. |
EnumerateFiles(String) |
Belirtilen yolda tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür. |
EnumerateFiles(String, String) |
Belirtilen yoldaki bir arama deseni ile eşleşen tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür. |
EnumerateFiles(String, String, SearchOption)
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
Belirtilen yoldaki bir arama deseni ile eşleşen ve isteğe bağlı olarak alt dizinleri arayan tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür.
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)
Parametreler
- path
- String
Aranacak dizinin göreli veya mutlak yolu. Bu dize, büyük küçük harf duyarlı değildir.
- searchPattern
- String
içindeki dosyaların path
adlarına uygun arama dizesi. Bu parametre geçerli değişmez değer yolu ile joker karakter (* ve ?) karakterlerin bir bileşimini içerebilir, ancak normal ifadeleri desteklemez.
- searchOption
- SearchOption
Arama işleminin yalnızca geçerli dizini mi yoksa tüm alt dizinleri mi içermesi gerektiğini belirten numaralandırma değerlerinden biri. TopDirectoryOnly varsayılan değerdir.
Döndürülenler
tarafından path
belirtilen dizindeki ve belirtilen arama deseni ve arama seçeneğiyle eşleşen dosyalar için tam adların (yollar dahil) numaralandırılabilir koleksiyonu.
Özel durumlar
2.1'den eski .NET Framework ve .NET Core sürümleri: path
sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya geçersiz karakterler içerir. yöntemini kullanarak GetInvalidPathChars() geçersiz karakterleri sorgulayabilirsiniz.
-veya-
searchPattern
geçerli bir desen içermiyor.
searchOption
geçerli SearchOption bir değer değil.
path
, eşlenmemiş bir sürücüye başvurmak gibi geçersizdir.
path
bir dosya adıdır.
Belirtilen yol, dosya adı veya birleştirilmiş, sistem tanımlı uzunluk üst sınırını aşıyor.
Çağıranın gerekli izni yok.
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki örnekte, bir dizindeki ve alt dizinlerindeki tüm metin dosyalarının nasıl alınıp yeni bir dizine nasıl taşınacakları gösterilmektedir. Dosyalar taşındıktan sonra artık özgün dizinlerde bulunmaz.
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
Aşağıdaki örnek, uzantısına .txt
sahip tüm dosyaları yinelemeli olarak numaralandırır, dosyanın her satırını okur ve "Microsoft" dizesini içeriyorsa satırı görüntüler.
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
Açıklamalar
searchPattern
değişmez karakter ve joker karakterlerin birleşimi olabilir, ancak normal ifadeleri desteklemez. içinde aşağıdaki joker karakter tanımlayıcılara izin verilir searchPattern
.
Joker karakter tanımlayıcısı | Eşleşmeler |
---|---|
* (yıldız işareti) | Bu konumda sıfır veya daha fazla karakter. |
? (soru işareti) | Bu konumda tam olarak bir karakter var. |
Joker karakter dışındaki karakterler değişmez karakterlerdir. Örneğin, searchPattern
"*t" dizesi "t" harfiyle biten tüm adları path
arar.
searchPattern
"s*" dizesi, "s" harfiyle başlayan tüm adları path
arar.
Not
Yalnızca .NET Framework: içinde searchPattern
yıldız işareti joker karakterini kullandığınızda ve üç karakterli bir dosya uzantısı (örneğin, "*.txt") belirttiğinizde, bu yöntem ayrıca belirtilen uzantıyla başlayan uzantılara sahip dosyaları da döndürür. Örneğin, "*.xls" arama deseni hem "book.xls" hem de "book.xlsx" döndürür. Bu davranış yalnızca arama düzeninde yıldız işareti kullanıldığında ve sağlanan dosya uzantısı tam olarak üç karakter olduğunda oluşur. Arama deseninin herhangi bir yerinde soru işareti joker karakterini kullanırsanız, bu yöntem yalnızca belirtilen dosya uzantısıyla tam olarak eşleşen dosyaları döndürür. Aşağıdaki tabloda bu anomali .NET Framework'de yer alır.
Dizindeki dosyalar | Arama düzeni | .NET 5+ döndürür | .NET Framework döndürür |
---|---|---|---|
file.ai, file.aif | *.Aı | 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
iki noktayla ("..") sona eremez veya iki nokta ("..") ve ardından DirectorySeparatorChar veya AltDirectorySeparatorCharile bitemez veya geçersiz karakter içeremez. yöntemini kullanarak GetInvalidPathChars geçersiz karakterleri sorgulayabilirsiniz.
Göreli yol bilgilerini parametresiyle path
belirtebilirsiniz. Göreli yol bilgileri, yöntemini kullanarak belirleyebileceğiniz geçerli çalışma dizinine GetCurrentDirectory göre yorumlanır.
EnumerateFiles ve GetFiles yöntemleri aşağıdaki gibi farklılık gösterir: kullandığınızdaEnumerateFiles, koleksiyonun tamamı döndürülmeden önce ad koleksiyonunu numaralandırmaya başlayabilirsiniz. kullandığınızda GetFiles, diziye erişebilmeniz için önce ad dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, birçok dosya ve dizinle EnumerateFiles çalışırken daha verimli olabilir.
Döndürülen koleksiyon önbelleğe alınmaz. Koleksiyondaki öğesine GetEnumerator yapılan her çağrı yeni bir numaralandırma başlatır.
Şunlara uygulanır
EnumerateFiles(String, String, EnumerationOptions)
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
Belirtilen yoldaki bir arama deseni ve numaralandırma seçenekleriyle eşleşen ve isteğe bağlı olarak alt dizinleri arayan tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür.
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)
Parametreler
- path
- String
Aranacak dizinin göreli veya mutlak yolu. Bu dize, büyük küçük harf duyarlı değildir.
- searchPattern
- String
içindeki dosyaların path
adlarına uygun arama dizesi. Bu parametre geçerli değişmez değer yolu ile joker karakter (* ve ?) karakterlerin bir bileşimini içerebilir, ancak normal ifadeleri desteklemez.
- enumerationOptions
- EnumerationOptions
Kullanılacak arama ve numaralandırma yapılandırmasını açıklayan bir nesne.
Döndürülenler
ve tarafından path
belirtilen dizindeki dosyalar için belirtilen arama deseni ve numaralandırma seçenekleriyle eşleşen tam adların (yollar dahil) numaralandırılabilir koleksiyonu.
Özel durumlar
2.1'den eski .NET Framework ve .NET Core sürümleri: path
sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya geçersiz karakterler içerir. yöntemini kullanarak GetInvalidPathChars() geçersiz karakterleri sorgulayabilirsiniz.
-veya-
searchPattern
geçerli bir desen içermiyor.
searchOption
geçerli SearchOption bir değer değil.
path
, eşlenmemiş bir sürücüye başvurmak gibi geçersizdir.
path
bir dosya adıdır.
Belirtilen yol, dosya adı veya birleştirilmiş, sistem tanımlı uzunluk üst sınırını aşıyor.
Çağıranın gerekli izni yok.
Açıklamalar
searchPattern
değişmez karakter ve joker karakterlerin birleşimi olabilir, ancak normal ifadeleri desteklemez. içinde aşağıdaki joker karakter tanımlayıcılara izin verilir searchPattern
.
Joker karakter tanımlayıcısı | Eşleşmeler |
---|---|
* (yıldız işareti) | Bu konumda sıfır veya daha fazla karakter. |
? (soru işareti) | Bu konumda tam olarak bir karakter var. |
Joker karakter dışındaki karakterler değişmez karakterlerdir. Örneğin, searchPattern
"*t" dizesi "t" harfiyle biten tüm adları path
arar.
searchPattern
"s*" dizesi, "s" harfiyle başlayan tüm adları path
arar.
Not
Yalnızca .NET Framework: içinde searchPattern
yıldız işareti joker karakterini kullandığınızda ve üç karakterli bir dosya uzantısı (örneğin, "*.txt") belirttiğinizde, bu yöntem ayrıca belirtilen uzantıyla başlayan uzantılara sahip dosyaları da döndürür. Örneğin, "*.xls" arama deseni hem "book.xls" hem de "book.xlsx" döndürür. Bu davranış yalnızca arama düzeninde yıldız işareti kullanıldığında ve sağlanan dosya uzantısı tam olarak üç karakter olduğunda oluşur. Arama deseninin herhangi bir yerinde soru işareti joker karakterini kullanırsanız, bu yöntem yalnızca belirtilen dosya uzantısıyla tam olarak eşleşen dosyaları döndürür. Aşağıdaki tabloda bu anomali .NET Framework'de yer alır.
Dizindeki dosyalar | Arama düzeni | .NET 5+ döndürür | .NET Framework döndürür |
---|---|---|---|
file.ai, file.aif | *.Aı | 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
iki noktayla ("..") sona eremez veya iki nokta ("..") ve ardından DirectorySeparatorChar veya AltDirectorySeparatorCharile bitemez veya geçersiz karakter içeremez. yöntemini kullanarak GetInvalidPathChars geçersiz karakterleri sorgulayabilirsiniz.
Göreli yol bilgilerini parametresiyle path
belirtebilirsiniz. Göreli yol bilgileri, yöntemini kullanarak belirleyebileceğiniz geçerli çalışma dizinine GetCurrentDirectory göre yorumlanır.
EnumerateFiles ve GetFiles yöntemleri aşağıdaki gibi farklılık gösterir: kullandığınızdaEnumerateFiles, koleksiyonun tamamı döndürülmeden önce ad koleksiyonunu numaralandırmaya başlayabilirsiniz. kullandığınızda GetFiles, diziye erişebilmeniz için önce ad dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, birçok dosya ve dizinle EnumerateFiles çalışırken daha verimli olabilir.
Döndürülen koleksiyon önbelleğe alınmaz. Koleksiyondaki öğesine GetEnumerator yapılan her çağrı yeni bir numaralandırma başlatır.
Şunlara uygulanır
EnumerateFiles(String)
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
Belirtilen yolda tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür.
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)
Parametreler
- path
- String
Aranacak dizinin göreli veya mutlak yolu. Bu dize, büyük küçük harf duyarlı değildir.
Döndürülenler
tarafından path
belirtilen dizindeki dosyalar için tam adların (yollar dahil) numaralandırılabilir koleksiyonu.
Özel durumlar
2.1'den eski .NET Framework ve .NET Core sürümleri: path
sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya geçersiz karakterler içerir. yöntemini kullanarak GetInvalidPathChars() geçersiz karakterleri sorgulayabilirsiniz.
path
, null
değeridir.
path
, eşlenmemiş bir sürücüye başvurmak gibi geçersizdir.
path
bir dosya adıdır.
Belirtilen yol, dosya adı veya birleştirilmiş, sistem tanımlı uzunluk üst sınırını aşıyor.
Çağıranın gerekli izni yok.
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki örnekte, bir dizindeki tüm dosyaların nasıl alınıp yeni bir dizine taşınacakları gösterilmektedir. Dosyalar taşındıktan sonra artık özgün dizinde bulunmaz.
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
Aşağıdaki örnek, belirtilen dizindeki dosyaları numaralandırır, dosyanın her satırını okur ve "Europe" dizesini içeriyorsa satırı görüntüler.
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
Açıklamalar
Göreli yol bilgilerini parametresiyle path
belirtebilirsiniz. Göreli yol bilgileri, yöntemini kullanarak belirleyebileceğiniz geçerli çalışma dizinine GetCurrentDirectory göre yorumlanır.
EnumerateFiles ve GetFiles yöntemleri aşağıdaki gibi farklılık gösterir: kullandığınızdaEnumerateFiles, koleksiyonun tamamı döndürülmeden önce ad koleksiyonunu numaralandırmaya başlayabilirsiniz. kullandığınızda GetFiles, diziye erişebilmeniz için önce ad dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, birçok dosya ve dizinle EnumerateFiles çalışırken daha verimli olabilir.
Döndürülen koleksiyon önbelleğe alınmaz; koleksiyondaki öğesine GetEnumerator yapılan her çağrı yeni bir numaralandırma başlatır.
Şunlara uygulanır
EnumerateFiles(String, String)
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
- Kaynak:
- Directory.cs
Belirtilen yoldaki bir arama deseni ile eşleşen tam dosya adlarından oluşan numaralandırılabilir bir koleksiyon döndürür.
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)
Parametreler
- path
- String
Aranacak dizinin göreli veya mutlak yolu. Bu dize, büyük küçük harf duyarlı değildir.
- searchPattern
- String
içindeki dosyaların path
adlarına uygun arama dizesi. Bu parametre geçerli değişmez değer yolu ile joker karakter (* ve ?) karakterlerin bir bileşimini içerebilir, ancak normal ifadeleri desteklemez.
Döndürülenler
tarafından path
belirtilen dizindeki ve belirtilen arama deseni ile eşleşen dosyalar için tam adların (yollar dahil) numaralandırılabilir koleksiyonu.
Özel durumlar
2.1'den eski .NET Framework ve .NET Core sürümleri: path
sıfır uzunlukta bir dizedir, yalnızca boşluk içerir veya geçersiz karakterler içerir. yöntemini kullanarak GetInvalidPathChars() geçersiz karakterleri sorgulayabilirsiniz.
-veya-
searchPattern
geçerli bir desen içermiyor.
path
, eşlenmemiş bir sürücüye başvurmak gibi geçersizdir.
path
bir dosya adıdır.
Belirtilen yol, dosya adı veya birleştirilmiş, sistem tanımlı uzunluk üst sınırını aşıyor.
Çağıranın gerekli izni yok.
Çağıranın gerekli izni yok.
Örnekler
Aşağıdaki örnekte, bir dizindeki tüm metin dosyalarının nasıl alınıp yeni bir dizine taşınacakları gösterilmektedir. Dosyalar taşındıktan sonra artık özgün dizinde bulunmaz.
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
Aşağıdaki örnek, belirtilen dizinde ".txt" uzantısına sahip dosyaları numaralandırır, dosyanın her satırını okur ve "Europe" dizesini içeriyorsa satırı görüntüler.
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
Açıklamalar
searchPattern
değişmez karakter ve joker karakterlerin birleşimi olabilir, ancak normal ifadeleri desteklemez. içinde aşağıdaki joker karakter tanımlayıcılara izin verilir searchPattern
.
Joker karakter tanımlayıcısı | Eşleşmeler |
---|---|
* (yıldız işareti) | Bu konumda sıfır veya daha fazla karakter. |
? (soru işareti) | Bu konumda tam olarak bir karakter var. |
Joker karakter dışındaki karakterler değişmez karakterlerdir. Örneğin, searchPattern
"*t" dizesi "t" harfiyle biten tüm adları path
arar.
searchPattern
"s*" dizesi, "s" harfiyle başlayan tüm adları path
arar.
Not
Yalnızca .NET Framework: içinde searchPattern
yıldız işareti joker karakterini kullandığınızda ve üç karakterli bir dosya uzantısı (örneğin, "*.txt") belirttiğinizde, bu yöntem ayrıca belirtilen uzantıyla başlayan uzantılara sahip dosyaları da döndürür. Örneğin, "*.xls" arama deseni hem "book.xls" hem de "book.xlsx" döndürür. Bu davranış yalnızca arama düzeninde yıldız işareti kullanıldığında ve sağlanan dosya uzantısı tam olarak üç karakter olduğunda oluşur. Arama deseninin herhangi bir yerinde soru işareti joker karakterini kullanırsanız, bu yöntem yalnızca belirtilen dosya uzantısıyla tam olarak eşleşen dosyaları döndürür. Aşağıdaki tabloda bu anomali .NET Framework'de yer alır.
Dizindeki dosyalar | Arama düzeni | .NET 5+ döndürür | .NET Framework döndürür |
---|---|---|---|
file.ai, file.aif | *.Aı | 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
iki noktayla ("..") sona eremez veya iki nokta ("..") ve ardından DirectorySeparatorChar veya AltDirectorySeparatorCharile bitemez veya geçersiz karakter içeremez. yöntemini kullanarak GetInvalidPathChars geçersiz karakterleri sorgulayabilirsiniz.
Göreli yol bilgilerini parametresiyle path
belirtebilirsiniz. Göreli yol bilgileri, yöntemini kullanarak belirleyebileceğiniz geçerli çalışma dizinine GetCurrentDirectory göre yorumlanır.
EnumerateFiles ve GetFiles yöntemleri aşağıdaki gibi farklılık gösterir: kullandığınızdaEnumerateFiles, koleksiyonun tamamı döndürülmeden önce ad koleksiyonunu numaralandırmaya başlayabilirsiniz; kullandığınızdaGetFiles, diziye erişebilmeniz için ad dizisinin tamamının döndürülmesini beklemeniz gerekir. Bu nedenle, birçok dosya ve dizinle EnumerateFiles çalışırken daha verimli olabilir.
Döndürülen koleksiyon önbelleğe alınmaz. Koleksiyondaki öğesine GetEnumerator yapılan her çağrı yeni bir numaralandırma başlatır.