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)

지정된 경로에서 검색 패턴과 일치하는 디렉터리 전체 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.Returns an enumerable collection of the directory full names that match a search pattern in a specified path, and optionally searches subdirectories.

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.

EnumerateDirectoriesGetDirectories 메서드는 다음과 같습니다. 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 개 이상의 문자입니다.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는 두 개의 마침표 ("..")로 끝나거나 마침표 두 개 ("..")를 포함 하 고 그 다음에 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.

EnumerateDirectoriesGetDirectories 메서드는 다음과 같습니다. 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)

지정된 경로에서 검색 패턴과 일치하는 디렉터리 전체 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.Returns an enumerable collection of the 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::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

검색할 디렉터리에 대한 상대 또는 절대 경로입니다.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.

enumerationOptions
EnumerationOptions

사용할 검색 및 열거형 구성을 설명하는 개체입니다.An object that describes the search and enumeration configuration to use.

반환

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 enumeration options.

예외

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.

path 또는 searchPatternnull인 경우path or 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.

설명

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) 해당 위치에 정확 하 게 하나의 문자입니다.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는 두 개의 마침표 ("..")로 끝나거나 마침표 두 개 ("..")를 포함 하 고 그 다음에 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.

EnumerateDirectoriesGetDirectories 메서드는 다음과 같습니다. 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, 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

검색 작업에 현재 디렉터리만 포함할지 아니면 모든 하위 디렉터리를 포함할지를 지정하는 열거형 값 중 하나입니다.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 search 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) 해당 위치에 정확 하 게 하나의 문자입니다.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는 두 개의 마침표 ("..")로 끝나거나 마침표 두 개 ("..")를 포함 하 고 그 다음에 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.

EnumerateDirectoriesGetDirectories 메서드는 다음과 같습니다. 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.

적용 대상