DirectoryInfo.EnumerateDirectories 메서드

정의

현재 디렉터리에 있는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information in the current directory.

오버로드

EnumerateDirectories(String, SearchOption)

지정된 검색 패턴 및 하위 디렉터리 검색 옵션과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches a specified search pattern and search subdirectory option.

EnumerateDirectories(String, EnumerationOptions)

지정된 검색 패턴 및 열거형 옵션과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches the specified search pattern and enumeration options.

EnumerateDirectories()

현재 디렉터리에 있는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information in the current directory.

EnumerateDirectories(String)

지정된 검색 패턴과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches a specified search pattern.

EnumerateDirectories(String, SearchOption)

지정된 검색 패턴 및 하위 디렉터리 검색 옵션과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches a specified search pattern and search subdirectory option.

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

디렉터리 이름과 일치하는지 비교할 검색 문자열입니다.The search string to match against the names of directories. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.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 all subdirectories. 기본값은 TopDirectoryOnly입니다.The default value is TopDirectoryOnly.

반환

IEnumerable<DirectoryInfo>

searchPatternsearchOption과 일치하는 디렉터리의 열거 가능 컬렉션입니다.An enumerable collection of directories that matches searchPattern and searchOption.

예외

searchPattern이(가) null인 경우searchPattern is null.

searchOption는 유효한 SearchOption 값이 아닙니다.searchOption is not a valid SearchOption value.

DirectoryInfo 개체에서 캡슐화된 경로가 잘못된 경우(예: 매핑되지 않은 드라이브의 경로를 지정한 경우)The path encapsulated in the DirectoryInfo object is invalid (for example, it is on an unmapped drive).

호출자에게 필요한 권한이 없는 경우The caller does not have the required permission.

예제

다음 예제에서는이 메서드와 메서드를 사용 하 여 EnumerateFiles 시작 디렉터리 내의 파일 및 디렉터리를 열거 하 고 10mb를 초과 하는 파일의 이름과 크기를 표시 합니다.The following example uses this method and the EnumerateFiles method to enumerate the files and directories within the start directory and display the name and size of any files over 10 MB.

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 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. 예를 들어 문자열 " * t"는 문자 "t"로 끝나는 모든 이름을 검색 합니다.For example, the string "*t" searches for all names in ending with the letter "t". ".". " searchPattern S" 문자열은 * path "s" 문자로 시작 하는 모든 이름을 검색 합니다.The searchPattern string "s*" searches for all names in path beginning with the letter "s".

및 메서드는 다음과 같습니다 EnumerateDirectories GetDirectories .The EnumerateDirectories and GetDirectories methods differ as follows:

  • 를 사용 하 EnumerateDirectories DirectoryInfo 는 경우 전체 컬렉션을 반환 하기 전에 개체 컬렉션의 열거를 시작할 수 있습니다.When you use EnumerateDirectories, you can start enumerating the collection of DirectoryInfo objects before the whole collection is returned.

  • 를 사용 하 GetDirectories 는 경우 배열에 액세스할 수 있기 전에 개체의 전체 배열이 반환 될 때까지 기다려야 합니다 DirectoryInfo .When you use GetDirectories, you must wait for the whole array of DirectoryInfo objects 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.

이 메서드는 다음 속성의 값을 미리 채웁니다 DirectoryInfo .This method pre-populates the values of the following DirectoryInfo properties:

반환 된 컬렉션은 캐시 되지 않습니다. GetEnumerator 컬렉션에서 메서드를 호출할 때마다 새 열거가 시작 됩니다.The returned collection is not cached; each call to the GetEnumerator method on the collection will start a new enumeration.

적용 대상

EnumerateDirectories(String, EnumerationOptions)

지정된 검색 패턴 및 열거형 옵션과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches the specified search pattern and enumeration options.

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

디렉터리 이름과 일치하는지 비교할 검색 문자열입니다.The search string to match against the names of directories. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.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.

반환

IEnumerable<DirectoryInfo>

searchPatternenumerationOptions과 일치하는 디렉터리의 열거 가능 컬렉션입니다.An enumerable collection of directories that matches searchPattern and enumerationOptions.

예외

searchPattern이(가) null인 경우searchPattern is null.

DirectoryInfo 개체에서 캡슐화된 경로가 잘못된 경우(예: 매핑되지 않은 드라이브의 경로를 지정한 경우)The path encapsulated in the DirectoryInfo object is invalid (for example, it is on an unmapped drive).

호출자에게 필요한 권한이 없는 경우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) 해당 위치에서 0 개 또는 1 자입니다.Zero or one character in that position.

와일드 카드 이외의 문자는 리터럴 문자입니다.Characters other than the wildcard are literal characters. 예를 들어 문자열 " * t"는 문자 "t"로 끝나는 모든 이름을 검색 합니다.For example, the string "*t" searches for all names in ending with the letter "t". ".". " searchPattern S" 문자열은 * path "s" 문자로 시작 하는 모든 이름을 검색 합니다.The searchPattern string "s*" searches for all names in path beginning with the letter "s".

및 메서드는 다음과 같습니다 EnumerateDirectories GetDirectories .The EnumerateDirectories and GetDirectories methods differ as follows:

  • 를 사용 하 EnumerateDirectories DirectoryInfo 는 경우 전체 컬렉션을 반환 하기 전에 개체 컬렉션의 열거를 시작할 수 있습니다.When you use EnumerateDirectories, you can start enumerating the collection of DirectoryInfo objects before the whole collection is returned.

  • 를 사용 하 GetDirectories 는 경우 배열에 액세스할 수 있기 전에 개체의 전체 배열이 반환 될 때까지 기다려야 합니다 DirectoryInfo .When you use GetDirectories, you must wait for the whole array of DirectoryInfo objects 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.

이 메서드는 다음 속성의 값을 미리 채웁니다 DirectoryInfo .This method pre-populates the values of the following DirectoryInfo properties:

반환 된 컬렉션은 캐시 되지 않습니다. GetEnumerator 컬렉션에서 메서드를 호출할 때마다 새 열거가 시작 됩니다.The returned collection is not cached; each call to the GetEnumerator method on the collection will start a new enumeration.

적용 대상

EnumerateDirectories()

현재 디렉터리에 있는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information in the current directory.

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>

현재 디렉터리에 있는 디렉터리의 열거 가능 컬렉션입니다.An enumerable collection of directories in the current directory.

예외

DirectoryInfo 개체에서 캡슐화된 경로가 잘못된 경우(예: 매핑되지 않은 드라이브의 경로를 지정한 경우)The path encapsulated in the DirectoryInfo object is invalid (for example, it is on an unmapped drive).

호출자에게 필요한 권한이 없는 경우The caller does not have the required permission.

예제

다음 예제에서는 C:\Program Files 디렉터리 아래의 하위 디렉터리를 열거 하 고 LINQ 쿼리를 사용 하 여 속성 값을 확인 함으로써 2009 이전에 생성 된 모든 디렉터리의 이름을 반환 합니다 CreationTimeUtc .The following example enumerates the subdirectories under the C:\Program Files directory and uses a LINQ query to return the names of all directories that were created before 2009 by checking the value of the CreationTimeUtc property.

하위 디렉터리의 이름만 필요한 경우에는 정적 클래스를 사용 하 여 Directory 성능을 향상 시킬 수 있습니다.If you only need the names of the subdirectories, use the static Directory class for better performance. 예를 들어 참조 된 EnumerateDirectories(String) 메서드.For an example, see the EnumerateDirectories(String) method.

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

설명

및 메서드는 다음과 같습니다 EnumerateDirectories GetDirectories .The EnumerateDirectories and GetDirectories methods differ as follows:

  • 를 사용 하 EnumerateDirectories DirectoryInfo 는 경우 전체 컬렉션을 반환 하기 전에 개체 컬렉션의 열거를 시작할 수 있습니다.When you use EnumerateDirectories, you can start enumerating the collection of DirectoryInfo objects before the whole collection is returned.

  • 를 사용 하 GetDirectories 는 경우 배열에 액세스할 수 있기 전에 개체의 전체 배열이 반환 될 때까지 기다려야 합니다 DirectoryInfo .When you use GetDirectories, you must wait for the whole array of DirectoryInfo objects 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.

이 메서드는 다음 속성의 값을 미리 채웁니다 DirectoryInfo .This method pre-populates the values of the following DirectoryInfo properties:

반환 된 컬렉션은 캐시 되지 않습니다. GetEnumerator 컬렉션에서 메서드를 호출할 때마다 새 열거가 시작 됩니다.The returned collection is not cached; each call to the GetEnumerator method on the collection will start a new enumeration.

적용 대상

EnumerateDirectories(String)

지정된 검색 패턴과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of directory information that matches a specified search pattern.

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

디렉터리 이름과 일치하는지 비교할 검색 문자열입니다.The search string to match against the names of directories. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

반환

IEnumerable<DirectoryInfo>

searchPattern과 일치하는 디렉터리의 열거 가능 컬렉션입니다.An enumerable collection of directories that matches searchPattern.

예외

searchPattern이(가) null인 경우searchPattern is null.

DirectoryInfo 개체에서 캡슐화된 경로가 잘못된 경우(예: 매핑되지 않은 드라이브의 경로를 지정한 경우)The path encapsulated in the DirectoryInfo object is invalid (for example, it is on an unmapped drive).

호출자에게 필요한 권한이 없는 경우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) 해당 위치에서 0 개 또는 1 자입니다.Zero or one character in that position.

와일드 카드 이외의 문자는 리터럴 문자입니다.Characters other than the wildcard are literal characters. 예를 들어 문자열 " * t"는 문자 "t"로 끝나는 모든 이름을 검색 합니다.For example, the string "*t" searches for all names in ending with the letter "t". ".". " searchPattern S" 문자열은 * path "s" 문자로 시작 하는 모든 이름을 검색 합니다.The searchPattern string "s*" searches for all names in path beginning with the letter "s".

및 메서드는 다음과 같습니다 EnumerateDirectories GetDirectories .The EnumerateDirectories and GetDirectories methods differ as follows:

  • 를 사용 하 EnumerateDirectories DirectoryInfo 는 경우 전체 컬렉션을 반환 하기 전에 개체 컬렉션의 열거를 시작할 수 있습니다.When you use EnumerateDirectories, you can start enumerating the collection of DirectoryInfo objects before the whole collection is returned.

  • 를 사용 하 GetDirectories 는 경우 배열에 액세스할 수 있기 전에 개체의 전체 배열이 반환 될 때까지 기다려야 합니다 DirectoryInfo .When you use GetDirectories, you must wait for the whole array of DirectoryInfo objects 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.

이 메서드는 다음 속성의 값을 미리 채웁니다 DirectoryInfo .This method pre-populates the values of the following DirectoryInfo properties:

반환 된 컬렉션은 캐시 되지 않습니다. GetEnumerator 컬렉션에서 메서드를 호출할 때마다 새 열거가 시작 됩니다.The returned collection is not cached; each call to the GetEnumerator method on the collection will start a new enumeration.

적용 대상