Directory.EnumerateFiles Yöntem

Tanım

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 pathadları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.

path, null değeridir.

-veya-

searchPattern, null değeridir.

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 .txtsahip 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 pathadları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.

path, null değeridir.

-veya-

searchPattern, null değeridir.

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 pathbelirtilen 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 pathadları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, null değeridir.

-veya-

searchPattern, 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 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.

Şunlara uygulanır