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

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

戻り値

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

戻り値

IEnumerable<String>

指定した検索パターンに一致し、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 終わるすべての名前を検索します。 文字列 "s" は searchPattern 、文字 "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

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

戻り値

IEnumerable<String>

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 終わるすべての名前を検索します。 文字列 "s" は searchPattern 、文字 "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 です。

戻り値

IEnumerable<String>

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

例外

.NET Frameworkおよび .NET Core バージョンが 2.1 より前の場合: 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 終わるすべての名前を検索します。 文字列 "s" は searchPattern 、文字 "s*" で path 始まるすべての名前を検索します。

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

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

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

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

適用対象