Directory.EnumerateDirectories メソッド

定義

指定された条件を満たすディレクトリの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of directory full names that meet specified criteria.

オーバーロード

EnumerateDirectories(String)

指定されたパスに存在するディレクトリの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of directory full names in a specified path.

EnumerateDirectories(String, String)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of directory full names that match a search pattern in a specified path.

EnumerateDirectories(String, String, EnumerationOptions)
EnumerateDirectories(String, String, SearchOption)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。Returns an enumerable collection of directory full names that match a search pattern in a specified path, and optionally searches subdirectories.

EnumerateDirectories(String)

指定されたパスに存在するディレクトリの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of directory full names in a specified path.

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

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

戻り値

path で指定したディレクトリ内にあるディレクトリの完全名 (パスを含む) から成る列挙可能なコレクション。An enumerable collection of the full names (including paths) for the directories in the directory specified by path.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

pathnull です。path is null.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例では、指定されたパス内の最上位レベルのディレクトリを列挙します。The following example enumerates the top-level directories in a specified 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);
        }
    }
}
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 パラメーターで相対パスまたは絶対パスの情報を指定できます。You can specify relative or absolute path information in the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、GetCurrentDirectory メソッドを使用して判断できます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method. 返されたディレクトリ名には、path パラメーターで指定した値がプレフィックスとして付けられます。The returned directory names are prefixed with the value you provided in the path parameter. たとえば、path パラメーターで相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。For example, if you provide a relative path in the path parameter, the returned directory names will contain a relative path.

EnumerateDirectories メソッドと GetDirectories メソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。GetDirectoriesを使用するときは、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。The EnumerateDirectories and GetDirectories methods differ as follows: When you use EnumerateDirectories, you can start enumerating the collection of names before the whole collection is returned; when you use GetDirectories, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作している場合、EnumerateDirectories の方が効率的です。Therefore, when you are working with many files and directories, EnumerateDirectories can be more efficient.

返されたコレクションはキャッシュされません。コレクションの GetEnumerator を呼び出すたびに、新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

EnumerateDirectories(String, String)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of directory full names that match a search pattern in a specified path.

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

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

searchPattern
String

path 内のディレクトリの名前と照合する検索文字列。The search string to match against the names of directories in path. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

戻り値

指定した検索パターンに一致し、path で指定したディレクトリの中にあるディレクトリの完全名 (パスを含む) から成る列挙可能なコレクション。An enumerable collection of the full names (including paths) for the directories in the directory specified by path and that match the specified search pattern.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 無効な文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters with the GetInvalidPathChars() method.

- または --or- searchPattern には有効なパターンが含まれません。searchPattern does not contain a valid pattern.

pathnullです。path is null.

- または --or- searchPatternnull です。searchPattern is null.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例では、指定したパス内の、指定した検索パターンに一致する最上位レベルのディレクトリを列挙します。The following example enumerates the top-level directories in a specified path that match a specified search pattern.

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);
        }
    }
}
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 can be a combination of literal and wildcard characters, but it doesn't support regular expressions. searchPatternでは、次のワイルドカード指定子を使用できます。The following wildcard specifiers are permitted in searchPattern.

ワイルドカード指定子Wildcard specifier 一致件数Matches
* (アスタリスク)* (asterisk) その位置に0個以上の文字が含まれています。Zero or more characters in that position.
?? (疑問符)(question mark) その位置に0個または1個の文字。Zero or one character in that position.

ワイルドカード以外の文字はリテラル文字です。Characters other than the wildcard are literal characters. たとえば、searchPattern 文字列 "*t" は、末尾が文字 "t" である path 内のすべての名前を検索します。For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". searchPattern 文字列 "s*" は、文字 "s" で始まる path 内のすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

searchPattern の末尾に2つのピリオド ("..") を指定することはできません。また、2つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできません。searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars method.

path パラメーターで相対パスまたは絶対パスの情報を指定できます。You can specify relative or absolute path information in the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、GetCurrentDirectory メソッドを使用して判断できます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method. 返されたディレクトリ名には、path パラメーターで指定した値がプレフィックスとして付けられます。The returned directory names are prefixed with the value you provided in the path parameter. たとえば、path パラメーターで相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。For example, if you provide a relative path in the path parameter, the returned directory names will contain a relative path.

EnumerateDirectories メソッドと GetDirectories メソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。GetDirectoriesを使用するときは、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。The EnumerateDirectories and GetDirectories methods differ as follows: When you use EnumerateDirectories, you can start enumerating the collection of names before the whole collection is returned; when you use GetDirectories, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作している場合、EnumerateDirectories の方が効率的です。Therefore, when you are working with many files and directories, EnumerateDirectories can be more efficient.

返されたコレクションはキャッシュされません。コレクションの GetEnumerator を呼び出すたびに、新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

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>

パラメーター

path
String
searchPattern
String
enumerationOptions
EnumerationOptions

戻り値

EnumerateDirectories(String, String, SearchOption)

指定されたパスから、検索パターンに一致するディレクトリの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。Returns an enumerable collection of directory full names that match a search pattern in a specified path, and optionally searches subdirectories.

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>

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

searchPattern
String

path 内のディレクトリの名前と照合する検索文字列。The search string to match against the names of directories in path. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

searchOption
SearchOption

検索操作に現在のディレクトリのみを含めるのか、またはすべてのサブディレクトリを含めるのかを指定する列挙値の 1 つ。One of the enumeration values that specifies whether the search operation should include only the current directory or should include all subdirectories.

既定値は TopDirectoryOnly です。The default value is TopDirectoryOnly.

戻り値

指定した検索パターンおよびオプションに一致し、path で指定したディレクトリの中にあるディレクトリの完全名 (パスを含む) から成る列挙可能なコレクション。An enumerable collection of the full names (including paths) for the directories in the directory specified by path and that match the specified search pattern and option.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 無効な文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

- または --or- searchPattern には有効なパターンが含まれません。searchPattern does not contain a valid pattern.

pathnullです。path is null.

- または --or- searchPatternnull です。searchPattern is null.

searchOption は有効な SearchOption 値ではありません。searchOption is not a valid SearchOption value.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例では、指定したパス内のディレクトリを列挙し、指定した検索パターンに一致させます。The following example enumerates directories in a specified path that match a specified search pattern. searchOption パラメーターを使用して、すべてのサブディレクトリを検索に含めることを指定します。It uses the searchOption parameter to specify that all subdirectories should be included in the search.

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);
        }
    }
}
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 can be a combination of literal and wildcard characters, but it doesn't support regular expressions. searchPatternでは、次のワイルドカード指定子を使用できます。The following wildcard specifiers are permitted in searchPattern.

ワイルドカード指定子Wildcard specifier 一致件数Matches
* (アスタリスク)* (asterisk) その位置に0個以上の文字が含まれています。Zero or more characters in that position.
?? (疑問符)(question mark) その位置に1文字だけです。Exactly one character in that position.

ワイルドカード以外の文字はリテラル文字です。Characters other than the wildcard are literal characters. たとえば、searchPattern 文字列 "*t" は、末尾が文字 "t" である path 内のすべての名前を検索します。For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". searchPattern 文字列 "s*" は、文字 "s" で始まる path 内のすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

searchPattern の末尾に2つのピリオド ("..") を指定することはできません。また、2つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできません。searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars method.

path パラメーターで相対パスまたは絶対パスの情報を指定できます。You can specify relative or absolute path information in the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、GetCurrentDirectory メソッドを使用して判断できます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method. 返されたディレクトリ名には、path パラメーターで指定した値がプレフィックスとして付けられます。The returned directory names are prefixed with the value you provided in the path parameter. たとえば、path パラメーターで相対パスを指定した場合、返されるディレクトリ名には相対パスが含まれます。For example, if you provide a relative path in the path parameter, the returned directory names will contain a relative path.

EnumerateDirectories メソッドと GetDirectories メソッドは次のように異なります。EnumerateDirectoriesを使用すると、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。GetDirectoriesを使用するときは、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。The EnumerateDirectories and GetDirectories methods differ as follows: When you use EnumerateDirectories, you can start enumerating the collection of names before the whole collection is returned; when you use GetDirectories, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作している場合、EnumerateDirectories の方が効率的です。Therefore, when you are working with many files and directories, EnumerateDirectories can be more efficient.

返されたコレクションはキャッシュされません。コレクションの GetEnumerator を呼び出すたびに、新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

適用対象