Bagikan melalui


Directory.EnumerateDirectories Metode

Definisi

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang memenuhi kriteria yang ditentukan.

Overload

EnumerateDirectories(String)

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan dalam jalur tertentu.

EnumerateDirectories(String, String)

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur yang ditentukan.

EnumerateDirectories(String, String, EnumerationOptions)

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur tertentu, dan secara opsional mencari subdirektori.

EnumerateDirectories(String, String, SearchOption)

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur tertentu, dan secara opsional mencari subdirektori.

EnumerateDirectories(String)

Sumber:
Directory.cs
Sumber:
Directory.cs
Sumber:
Directory.cs

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan dalam jalur tertentu.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path);
static member EnumerateDirectories : string -> seq<string>
Public Shared Function EnumerateDirectories (path As String) As IEnumerable(Of String)

Parameter

path
String

Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.

Mengembalikan

Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk direktori dalam direktori yang ditentukan oleh path.

Pengecualian

versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars() metode .

pathadalah null.

path tidak valid, seperti mengacu pada drive yang tidak dipetakan.

path adalah nama file.

Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.

Pemanggil tidak memiliki izin yang diperlukan.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh berikut menghitung direktori tingkat atas dalam jalur yang ditentukan.

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    private static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            List<string> dirs = new List<string>(Directory.EnumerateDirectories(docPath));

            foreach (var dir in dirs)
            {
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}");
            }
            Console.WriteLine($"{dirs.Count} directories found.");
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine(ex.Message);
        }
        catch (PathTooLongException ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}
open System
open System.IO

try
    // Set a variable to the My Documents path.
    let docPath = Environment.GetFolderPath Environment.SpecialFolder.MyDocuments

    let dirs = Directory.EnumerateDirectories docPath |> Seq.toList

    for dir in dirs do
        printfn $"{dir.Substring(dir.LastIndexOf Path.DirectorySeparatorChar + 1)}"
    printfn $"{dirs.Length} directories found."

with
| :? UnauthorizedAccessException as ex ->
    printfn $"{ex.Message}"
| :? PathTooLongException as ex ->
    printfn $"{ex.Message}"
Imports System.Collections.Generic
Imports System.IO

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

            Dim dirs As List(Of String) = New List(Of String)(Directory.EnumerateDirectories(dirPath))

            For Each folder In dirs
                Console.WriteLine($"{dir.Substring(dir.LastIndexOf(Path.DirectorySeparatorChar) + 1)}")
            Next
            Console.WriteLine($"{dirs.Count} directories found.")
        Catch ex As UnauthorizedAccessException
            Console.WriteLine(ex.Message)
        Catch ex As PathTooLongException
            Console.WriteLine(ex.Message)
        End Try

    End Sub
End Module

Keterangan

Anda dapat menentukan informasi jalur relatif atau absolut dalam path parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan metode .GetCurrentDirectory Nama direktori yang dikembalikan diawali dengan nilai yang Anda berikan dalam path parameter . Misalnya, jika Anda memberikan jalur relatif dalam path parameter, nama direktori yang dikembalikan akan berisi jalur relatif.

Metode EnumerateDirectories dan GetDirectories berbeda sebagai berikut: Ketika Anda menggunakan EnumerateDirectories, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetDirectories, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateDirectories bisa lebih efisien.

Koleksi yang dikembalikan tidak di-cache; setiap panggilan ke GetEnumerator pada koleksi akan memulai enumerasi baru.

Berlaku untuk

EnumerateDirectories(String, String)

Sumber:
Directory.cs
Sumber:
Directory.cs
Sumber:
Directory.cs

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur yang ditentukan.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern);
static member EnumerateDirectories : string * string -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String) As IEnumerable(Of String)

Parameter

path
String

Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.

searchPattern
String

String pencarian yang cocok dengan nama direktori di path. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.

Mengembalikan

Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk direktori dalam direktori yang ditentukan oleh dan yang cocok dengan path pola pencarian yang ditentukan.

Pengecualian

versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan GetInvalidPathChars() metode .

-atau-

searchPattern tidak berisi pola yang valid.

pathadalah null.

-atau-

searchPatternadalah null.

path tidak valid, seperti mengacu pada drive yang tidak dipetakan.

path adalah nama file.

Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.

Pemanggil tidak memiliki izin yang diperlukan.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh berikut menghitung direktori tingkat atas dalam jalur tertentu yang cocok dengan pola pencarian tertentu.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*")
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs = 
        Directory.EnumerateDirectories(dirPath, "dv_*")
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a list collection.
    let workDirs = Seq.toList dirs
    ()
    
with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*")
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Keterangan

searchPattern dapat berupa kombinasi karakter harfiah dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern.

Penentu kartubebas Cocok
* (tanda bintang) Nol karakter atau lebih dalam posisi tersebut.
? (tanda tanya) Tepat satu karakter dalam posisi itu.

Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern string "*t" mencari semua nama yang path diakhir dengan huruf "t". String searchPattern "s*" mencari semua nama di path awal dengan huruf "s".

searchPattern tidak dapat berakhir dalam dua periode ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars metode .

Anda dapat menentukan informasi jalur relatif atau absolut dalam path parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan metode .GetCurrentDirectory Nama direktori yang dikembalikan diawali dengan nilai yang Anda berikan dalam path parameter . Misalnya, jika Anda memberikan jalur relatif dalam path parameter, nama direktori yang dikembalikan akan berisi jalur relatif.

Metode EnumerateDirectories dan GetDirectories berbeda sebagai berikut: Ketika Anda menggunakan EnumerateDirectories, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetDirectories, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateDirectories bisa lebih efisien.

Koleksi yang dikembalikan tidak di-cache; setiap panggilan ke GetEnumerator pada koleksi akan memulai enumerasi baru.

Berlaku untuk

EnumerateDirectories(String, String, EnumerationOptions)

Sumber:
Directory.cs
Sumber:
Directory.cs
Sumber:
Directory.cs

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian di jalur tertentu, dan secara opsional mencari subdirektori.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateDirectories : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)

Parameter

path
String

Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.

searchPattern
String

String pencarian yang cocok dengan nama direktori di path. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.

enumerationOptions
EnumerationOptions

Objek yang menjelaskan konfigurasi pencarian dan enumerasi untuk digunakan.

Mengembalikan

Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk direktori dalam direktori yang ditentukan oleh dan yang cocok dengan path pola pencarian dan opsi enumerasi yang ditentukan.

Pengecualian

versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars() metode .

-atau-

searchPattern tidak berisi pola yang valid.

path atau searchPattern adalah null.

searchOption bukan nilai yang valid SearchOption .

path tidak valid, seperti mengacu pada drive yang tidak dipetakan.

path adalah nama file.

Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.

Pemanggil tidak memiliki izin yang diperlukan.

Pemanggil tidak memiliki izin yang diperlukan.

Keterangan

searchPattern dapat berupa kombinasi karakter harfiah dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern.

Penentu kartubebas Cocok
* (tanda bintang) Nol karakter atau lebih dalam posisi tersebut.
? (tanda tanya) Tepat satu karakter dalam posisi itu.

Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern string "*t" mencari semua nama yang path diakhir dengan huruf "t". String searchPattern "s*" mencari semua nama di path awal dengan huruf "s".

searchPattern tidak dapat berakhir dalam dua periode ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda dapat mengkueri karakter yang tidak valid dengan menggunakan GetInvalidPathChars metode .

Anda dapat menentukan informasi jalur relatif atau absolut dalam path parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan GetCurrentDirectory metode . Nama direktori yang dikembalikan diawali dengan nilai yang Anda berikan dalam path parameter . Misalnya, jika Anda memberikan jalur relatif dalam path parameter , nama direktori yang dikembalikan akan berisi jalur relatif.

Metode EnumerateDirectories dan GetDirectories berbeda sebagai berikut: Ketika Anda menggunakan EnumerateDirectories, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetDirectories, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateDirectories bisa lebih efisien.

Koleksi yang dikembalikan tidak di-cache; setiap panggilan ke GetEnumerator pada koleksi akan memulai enumerasi baru.

Berlaku untuk

EnumerateDirectories(String, String, SearchOption)

Sumber:
Directory.cs
Sumber:
Directory.cs
Sumber:
Directory.cs

Mengembalikan kumpulan nama lengkap direktori yang dapat dijumlahkan yang cocok dengan pola pencarian dalam jalur tertentu, dan secara opsional mencari subdirektori.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateDirectories(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateDirectories (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateDirectories : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateDirectories (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)

Parameter

path
String

Jalur relatif atau absolut ke direktori untuk dicari. String ini tidak peka huruf besar/kecil.

searchPattern
String

String pencarian yang cocok dengan nama direktori di path. Parameter ini dapat berisi kombinasi jalur harfiah yang valid dan karakter kartubebas (* dan ?), tetapi tidak mendukung ekspresi reguler.

searchOption
SearchOption

Salah satu nilai enumerasi yang menentukan apakah operasi pencarian hanya boleh menyertakan direktori saat ini atau harus menyertakan semua subdirektori. Nilai defaultnya adalah TopDirectoryOnly.

Mengembalikan

Kumpulan nama lengkap yang dapat dijumlahkan (termasuk jalur) untuk direktori dalam direktori yang ditentukan oleh dan yang cocok dengan path pola pencarian dan opsi pencarian yang ditentukan.

Pengecualian

versi .NET Framework dan .NET Core yang lebih lama dari 2.1: path adalah string panjang nol, hanya berisi spasi kosong, atau berisi karakter yang tidak valid. Anda bisa mengkueri karakter yang tidak valid dengan menggunakan metode .GetInvalidPathChars()

-atau-

searchPattern tidak berisi pola yang valid.

pathadalah null.

-atau-

searchPatternadalah null.

searchOption bukan nilai yang valid SearchOption .

path tidak valid, seperti mengacu pada drive yang tidak dipetakan.

path adalah nama file.

Jalur yang ditentukan, nama file, atau gabungan melebihi panjang maksimum yang ditentukan sistem.

Pemanggil tidak memiliki izin yang diperlukan.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh berikut menghitung direktori dalam jalur tertentu yang cocok dengan pola pencarian tertentu. Ini menggunakan searchOption parameter untuk menentukan bahwa semua subdirektori harus disertakan dalam pencarian.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in
                     Directory.EnumerateDirectories(dirPath, "dv_*",
                        SearchOption.AllDirectories)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}",
                    dir.Substring(dir.LastIndexOf("\\") + 1));
            }
            Console.WriteLine("{0} directories found.",
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
open System
open System.IO

try
    let dirPath = @"\\archives\2009\reports"

    let dirs =
        Directory.EnumerateDirectories(dirPath, "dv_*", SearchOption.AllDirectories)
        |> Seq.cache

    // Show results.
    for dir in dirs do
        // Remove path information from string.
        printfn $"{dir.Substring(dir.LastIndexOf '\\' + 1)}"
    printfn $"{Seq.length dirs} directories found."

    // Optionally create a List collection.
    let workDirs = Seq.toList dirs
    ()

with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{pathEx.Message}"
Imports System.Collections.Generic
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            Dim dirPath As String = "\\archives\2009\reports"

            ' LINQ query.
            Dim dirs = From folder In _
                Directory.EnumerateDirectories(dirPath, "dv_*", _
                    SearchOption.AllDirectories)
            For Each folder In dirs
                ' Remove path infomration from string.
                Console.WriteLine("{0}", _
                        folder.Substring(folder.LastIndexOf("\") + 1))
            Next
            Console.WriteLine("{0} directories found.", _
                dirs.Count.ToString())

            ' Optionally create a List collection.
            Dim workDirs As List(Of String) = New List(Of String)

        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub
End Module

Keterangan

searchPattern dapat menjadi kombinasi karakter literal dan kartubebas, tetapi tidak mendukung ekspresi reguler. Penentu kartubebas berikut diizinkan di searchPattern.

Penentu kartubebas Cocok
* (tanda bintang) Nol atau lebih karakter dalam posisi tersebut.
? (tanda tanya) Tepat satu karakter dalam posisi itu.

Karakter selain kartubebas adalah karakter harfiah. Misalnya, searchPattern string "*t" mencari semua nama yang path berakhiran dengan huruf "t". String searchPattern "s*" mencari semua nama yang path dimulai dengan huruf "s".

searchPattern tidak dapat berakhir dalam dua titik ("..") atau berisi dua titik ("..") diikuti oleh DirectorySeparatorChar atau AltDirectorySeparatorChar, juga tidak boleh berisi karakter yang tidak valid. Anda bisa mengkueri karakter yang tidak valid dengan menggunakan metode .GetInvalidPathChars

Anda dapat menentukan informasi jalur relatif atau absolut dalam path parameter . Informasi jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini, yang dapat Anda tentukan dengan menggunakan GetCurrentDirectory metode . Nama direktori yang dikembalikan diawali dengan nilai yang Anda berikan dalam path parameter . Misalnya, jika Anda memberikan jalur relatif dalam path parameter , nama direktori yang dikembalikan akan berisi jalur relatif.

Metode EnumerateDirectories dan GetDirectories berbeda sebagai berikut: Ketika Anda menggunakan EnumerateDirectories, Anda dapat mulai menghitung koleksi nama sebelum seluruh koleksi dikembalikan; ketika Anda menggunakan GetDirectories, Anda harus menunggu seluruh array nama dikembalikan sebelum Anda dapat mengakses array. Oleh karena itu, ketika Anda bekerja dengan banyak file dan direktori, EnumerateDirectories bisa lebih efisien.

Koleksi yang dikembalikan tidak di-cache; setiap panggilan ke GetEnumerator pada koleksi akan memulai enumerasi baru.

Berlaku untuk