DirectoryInfo.EnumerateDirectories メソッド

定義

現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。

オーバーロード

EnumerateDirectories(String, SearchOption)

指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なディレクトリ情報のコレクションを返します。

EnumerateDirectories(String, EnumerationOptions)

指定した検索パターンおよび列挙オプションに一致する列挙可能なディレクトリ情報のコレクションを返します。

EnumerateDirectories()

現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。

EnumerateDirectories(String)

指定された検索パターンに一致する列挙可能なディレクトリ情報のコレクションを返します。

EnumerateDirectories(String, SearchOption)

指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なディレクトリ情報のコレクションを返します。

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

パラメーター

searchPattern
String

ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

searchOption
SearchOption

検索操作に現在のディレクトリのみを含めるのか、またはすべてのサブディレクトリを含めるのかを指定する列挙値の 1 つ。 既定値は TopDirectoryOnly です。

戻り値

IEnumerable<DirectoryInfo>

searchPatternsearchOption に一致する列挙可能なディレクトリのコレクション。

例外

searchPatternnullです。

searchOption は正しい SearchOption 値ではありません。

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

呼び出し元に、必要なアクセス許可がありません。

次の例では、このメソッドと メソッドを使用して、スタート ディレクトリ内のファイルとディレクトリを列挙し、10 MB を超えるファイルの名前とサイズ EnumerateFiles を表示します。

using System;
using System.IO;

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

        DirectoryInfo diTop = new DirectoryInfo(docPath);

        try
        {
            foreach (var fi in diTop.EnumerateFiles())
            {
                try
                {
                    // Display each file over 10 MB.
                    if (fi.Length > 10000000)
                    {
                        Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
                    }
                }
                catch (UnauthorizedAccessException unAuthTop)
                {
                    Console.WriteLine($"{unAuthTop.Message}");
                }
            }

            foreach (var di in diTop.EnumerateDirectories("*"))
            {
                try
                {
                    foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
                    {
                        try
                        {
                            // Display each file over 10 MB.
                            if (fi.Length > 10000000)
                            {
                                Console.WriteLine($"{fi.FullName}\t\t{fi.Length:N0}");
                            }
                        }
                        catch (UnauthorizedAccessException unAuthFile)
                        {
                            Console.WriteLine($"unAuthFile: {unAuthFile.Message}");
                        }
                    }
                }
                catch (UnauthorizedAccessException unAuthSubDir)
                {
                    Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}");
                }
            }
        }
        catch (DirectoryNotFoundException dirNotFound)
        {
            Console.WriteLine($"{dirNotFound.Message}");
        }
        catch (UnauthorizedAccessException unAuthDir)
        {
            Console.WriteLine($"unAuthDir: {unAuthDir.Message}");
        }
        catch (PathTooLongException longPath)
        {
            Console.WriteLine($"{longPath.Message}");
        }
    }
}
Imports System.IO

Class Program
    Public Shared Sub Main(ByVal args As String())
        Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim diTop As New DirectoryInfo(dirPath)
        Try
            For Each fi In diTop.EnumerateFiles()
                Try
                    ' Display each file over 10 MB;
                    If fi.Length > 10000000 Then
                        Console.WriteLine("{0}" & vbTab & vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
                    End If
                Catch unAuthTop As UnauthorizedAccessException
                    Console.WriteLine($"{unAuthTop.Message}")
                End Try
            Next

            For Each di In diTop.EnumerateDirectories("*")
                Try
                    For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
                        Try
                            ' // Display each file over 10 MB;
                            If fi.Length > 10000000 Then
                                Console.WriteLine("{0}" & vbTab &
                                vbTab & "{1}", fi.FullName, fi.Length.ToString("N0"))
                            End If
                        Catch unAuthFile As UnauthorizedAccessException
                            Console.WriteLine($"unAuthFile: {unAuthFile.Message}")
                        End Try
                    Next
                Catch unAuthSubDir As UnauthorizedAccessException
                    Console.WriteLine($"unAuthSubDir: {unAuthSubDir.Message}")
                End Try
            Next
        Catch dirNotFound As DirectoryNotFoundException
            Console.WriteLine($"{dirNotFound.Message}")
        Catch unAuthDir As UnauthorizedAccessException
            Console.WriteLine($"unAuthDir: {unAuthDir.Message}")
        Catch longPath As PathTooLongException
            Console.WriteLine($"{longPath.Message}")
        End Try
    End Sub
End Class

注釈

searchPattern はリテラル文字とワイルドカード文字の組み合わせにできますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を使用できます searchPattern

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置に 0 個以上の文字が含まれています。
? (疑問符) その位置の 0 文字または 1 文字。

ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "t" は、文字 "t" で終わる * すべての名前を検索します。 ". 文字列 searchPattern "s * " は、文字 path "s" で始まるすべての名前を検索します。

メソッド EnumerateDirectoriesGetDirectories メソッドは次のように異なります。

  • を使用すると EnumerateDirectories 、コレクション全体が返される前に、 DirectoryInfo オブジェクトのコレクションの列挙を開始できます。

  • を使用する場合は、配列にアクセスする前に、オブジェクトの配列全体が返される GetDirectories DirectoryInfo のを待つ必要があります。

そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的な場合があります。

このメソッドは、次のプロパティの値を事前に設定 DirectoryInfo します。

返されたコレクションはキャッシュされません。コレクションの メソッドを呼 GetEnumerator び出すごとに、新しい列挙が開始されます。

適用対象

EnumerateDirectories(String, EnumerationOptions)

指定した検索パターンおよび列挙オプションに一致する列挙可能なディレクトリ情報のコレクションを返します。

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

パラメーター

searchPattern
String

ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

enumerationOptions
EnumerationOptions

使用する検索と列挙の構成を記述するオブジェクト。

戻り値

IEnumerable<DirectoryInfo>

searchPatternenumerationOptions に一致する列挙可能なディレクトリのコレクション。

例外

searchPatternnullです。

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

呼び出し元に、必要なアクセス許可がありません。

注釈

searchPattern はリテラル文字とワイルドカード文字の組み合わせにできますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を使用できます searchPattern

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置に 0 個以上の文字が含まれています。
? (疑問符) その位置の 0 文字または 1 文字。

ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "t" は、文字 "t" で終わる * すべての名前を検索します。 ". 文字列 searchPattern "s * " は、文字 path "s" で始まるすべての名前を検索します。

メソッド EnumerateDirectoriesGetDirectories メソッドは次のように異なります。

  • を使用すると EnumerateDirectories 、コレクション全体が返される前に、 DirectoryInfo オブジェクトのコレクションの列挙を開始できます。

  • を使用する場合は、配列にアクセスする前に、オブジェクトの配列全体が返される GetDirectories DirectoryInfo のを待つ必要があります。

そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的な場合があります。

このメソッドは、次のプロパティの値を事前に設定 DirectoryInfo します。

返されたコレクションはキャッシュされません。コレクションの メソッドを呼 GetEnumerator び出すごとに、新しい列挙が開始されます。

適用対象

EnumerateDirectories()

現在のディレクトリの列挙可能なディレクトリ情報のコレクションを返します。

public:
 System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories();
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories ();
member this.EnumerateDirectories : unit -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories () As IEnumerable(Of DirectoryInfo)

戻り値

IEnumerable<DirectoryInfo>

現在のディレクトリ内の列挙可能なディレクトリのコレクション。

例外

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

呼び出し元に、必要なアクセス許可がありません。

次の例では、C:\Program Files ディレクトリの下にあるサブディレクトリを列挙し、LINQ クエリを使用して、 プロパティの値を確認して、2009 より前に作成されたディレクトリの名前を返します。 CreationTimeUtc

サブディレクトリの名前だけが必要な場合は、パフォーマンスを向上するために静的 Directory クラスを使用します。 例については、 メソッドを参照 EnumerateDirectories(String) してください。

using System;
using System.IO;

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

            DirectoryInfo dirPrograms = new DirectoryInfo(docPath);
            DateTime StartOf2009 = new DateTime(2009, 01, 01);

            var dirs = from dir in dirPrograms.EnumerateDirectories()
            where dir.CreationTimeUtc > StartOf2009
            select new
            {
                ProgDir = dir,
            };

            foreach (var di in dirs)
            {
                Console.WriteLine($"{di.ProgDir.Name}");
            }
        }
    }
}
// </Snippet1>
Imports System.IO

Module Module1

    Sub Main()

        Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        Dim dirPrograms As New DirectoryInfo(dirPath)
        Dim StartOf2009 As New DateTime(2009, 1, 1)

        Dim dirs = From dir In dirPrograms.EnumerateDirectories()
                   Where dir.CreationTimeUtc > StartOf2009

        For Each di As DirectoryInfo In dirs
            Console.WriteLine("{0}", di.Name)
        Next

    End Sub

End Module

注釈

メソッド EnumerateDirectoriesGetDirectories メソッドは次のように異なります。

  • を使用すると EnumerateDirectories 、コレクション全体が返される前に、 DirectoryInfo オブジェクトのコレクションの列挙を開始できます。

  • を使用する場合は、配列にアクセスする前に、オブジェクトの配列全体が返される GetDirectories DirectoryInfo のを待つ必要があります。

そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的な場合があります。

このメソッドは、次のプロパティの値を事前に設定 DirectoryInfo します。

返されたコレクションはキャッシュされません。コレクションの メソッドを呼 GetEnumerator び出すごとに、新しい列挙が開始されます。

適用対象

EnumerateDirectories(String)

指定された検索パターンに一致する列挙可能なディレクトリ情報のコレクションを返します。

public:
 System::Collections::Generic::IEnumerable<System::IO::DirectoryInfo ^> ^ EnumerateDirectories(System::String ^ searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.DirectoryInfo> EnumerateDirectories (string searchPattern);
member this.EnumerateDirectories : string -> seq<System.IO.DirectoryInfo>
Public Function EnumerateDirectories (searchPattern As String) As IEnumerable(Of DirectoryInfo)

パラメーター

searchPattern
String

ディレクトリの名前と照合する検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

戻り値

IEnumerable<DirectoryInfo>

searchPattern に一致する列挙可能なディレクトリのコレクション。

例外

searchPatternnullです。

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

呼び出し元に、必要なアクセス許可がありません。

注釈

searchPattern はリテラル文字とワイルドカード文字の組み合わせにできますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を使用できます searchPattern

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置に 0 個以上の文字が含まれています。
? (疑問符) その位置の 0 文字または 1 文字。

ワイルドカード以外の文字はリテラル文字です。 たとえば、文字列 "t" は、文字 "t" で終わる * すべての名前を検索します。 ". 文字列 searchPattern "s * " は、文字 path "s" で始まるすべての名前を検索します。

メソッド EnumerateDirectoriesGetDirectories メソッドは次のように異なります。

  • を使用すると EnumerateDirectories 、コレクション全体が返される前に、 DirectoryInfo オブジェクトのコレクションの列挙を開始できます。

  • を使用する場合は、配列にアクセスする前に、オブジェクトの配列全体が返される GetDirectories DirectoryInfo のを待つ必要があります。

そのため、多くのファイルやディレクトリを操作する場合は、 EnumerateDirectories の方が効率的な場合があります。

このメソッドは、次のプロパティの値を事前に設定 DirectoryInfo します。

返されたコレクションはキャッシュされません。コレクションの メソッドを呼 GetEnumerator び出すごとに、新しい列挙が開始されます。

適用対象