Directory.EnumerateDirectories メソッド

定義

指定された条件を満たすディレクトリの完全名から成る、列挙可能なコレクションを返します。

オーバーロード

EnumerateDirectories(String)

指定されたパスに存在するディレクトリの完全名から成る、列挙可能なコレクションを返します。

EnumerateDirectories(String, String)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。

EnumerateDirectories(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと一致するディレクトリの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。

EnumerateDirectories(String, String, SearchOption)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

EnumerateDirectories(String)

指定されたパスに存在するディレクトリの完全名から成る、列挙可能なコレクションを返します。

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)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

戻り値

path で指定したディレクトリ内にあるディレクトリの完全名 (パスを含む) から成る列挙可能なコレクション。

例外

2.1 より前のバージョンの.NET Frameworkと .NET Core: path は長さ 0 の文字列、空白のみを含む、または無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

pathnullです。

たとえば、マップされていないドライブへの参照など、path は無効です。

path はファイル名です。

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。

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

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

次の例では、指定したパス内の最上位ディレクトリを列挙します。

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

注釈

相対パスまたは絶対パス情報は path 、 パラメーターで指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して決定できます。 返されるディレクトリ名の前には、 パラメーターで指定した値が path 付きます。 たとえば、 パラメーターに path 相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。

メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。を使用EnumerateDirectoriesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetDirectoriesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。

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

適用対象

EnumerateDirectories(String, String)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。

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)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

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

戻り値

指定した検索パターンに一致し、path で指定したディレクトリの中にあるディレクトリの完全名 (パスを含む) から成る列挙可能なコレクション。

例外

2.1 より前のバージョンの.NET Frameworkと .NET Core: path は長さ 0 の文字列、空白のみを含む、または無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、正しくない文字に対するクエリを実行できます。

- または -

searchPattern には有効なパターンが含まれません。

pathnullです。

または

searchPatternnullです。

たとえば、マップされていないドライブへの参照など、path は無効です。

path はファイル名です。

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。

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

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

次の例では、指定した検索パターンに一致する指定したパス内の最上位ディレクトリを列挙します。

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

注釈

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

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置に 1 文字だけ入力します。

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

searchPattern は、2 つのピリオド ("..") で終わることはできません。また、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを指定することも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

相対パスまたは絶対パス情報は path 、 パラメーターで指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して決定できます。 返されるディレクトリ名の前には、 パラメーターで指定した値が path 付きます。 たとえば、 パラメーターに path 相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。

メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。を使用EnumerateDirectoriesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetDirectoriesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。

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

適用対象

EnumerateDirectories(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと一致するディレクトリの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。

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)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

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

enumerationOptions
EnumerationOptions

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

戻り値

path で指定したディレクトリ内にあり、指定した検索パターンおよび列挙オプションと一致する、ディレクトリの完全名 (パスを含む) の列挙可能なコレクション。

例外

2.1 より前のバージョンの.NET Frameworkと .NET Core: path は長さ 0 の文字列、空白のみを含む、または無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

- または -

searchPattern には有効なパターンが含まれません。

path または searchPatternnull です。

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

たとえば、マップされていないドライブへの参照など、path は無効です。

path はファイル名です。

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。

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

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

注釈

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

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置に 1 文字だけ入力します。

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

searchPattern は、2 つのピリオド ("..") で終わることはできません。また、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを指定することも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

相対パスまたは絶対パス情報は path 、 パラメーターで指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して判断できます。 返されるディレクトリ名の前には、 パラメーターで指定した値が path 付きます。 たとえば、 パラメーターに path 相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。

メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。を使用EnumerateDirectoriesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetDirectoriesする場合は、名前の配列全体が返されるのを待ってから、配列にアクセスする必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。

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

適用対象

EnumerateDirectories(String, String, SearchOption)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。

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)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

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

searchOption
SearchOption

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

戻り値

path で指定したディレクトリ内にあり、指定した検索パターンおよび検索オプションと一致する、ディレクトリの完全名 (パスを含む) の列挙可能なコレクション。

例外

2.1 より前のバージョンの.NET Frameworkと .NET Core: path は長さ 0 の文字列、空白のみを含む、または無効な文字が含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

- または -

searchPattern には有効なパターンが含まれません。

pathnullです。

または

searchPatternnullです。

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

たとえば、マップされていないドライブへの参照など、path は無効です。

path はファイル名です。

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。

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

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

次の例では、指定した検索パターンに一致する指定したパス内のディレクトリを列挙します。 パラメーターを searchOption 使用して、すべてのサブディレクトリを検索に含める必要があることを指定します。

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

注釈

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

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置の 1 文字だけ。

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

searchPattern は、2 つのピリオド ("..") で終わることも、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

相対パスまたは絶対パス情報は path 、 パラメーターで指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。これは、 メソッドを GetCurrentDirectory 使用して判断できます。 返されるディレクトリ名の前には、 パラメーターで指定した値が path 付きます。 たとえば、 パラメーターに path 相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。

メソッドと GetDirectories メソッドはEnumerateDirectories次のように異なります。を使用EnumerateDirectoriesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetDirectoriesする場合は、名前の配列全体が返されるのを待ってから、配列にアクセスする必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateDirectories の方が効率的です。

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

適用対象