Directory.EnumerateFiles 메서드

정의

지정된 조건을 충족하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of full file names that meet specified criteria.

오버로드

EnumerateFiles(String, String, EnumerationOptions)

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

EnumerateFiles(String, String, SearchOption)

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

EnumerateFiles(String)

지정된 경로에 있는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of full file names in a specified path.

EnumerateFiles(String, String)

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of full file names that match a search pattern in a specified path.

EnumerateFiles(String, String, EnumerationOptions)

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

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : 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 files 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 files 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.

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.

설명

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".

참고

"*.txt"와 같은 searchPattern에 별표 와일드 카드 문자를 사용 하는 경우 지정 된 확장의 문자 수는 다음과 같이 검색에 영향을 줍니다.When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • 정확히 3 자 지정한 확장명을 사용 하는 경우 메서드는 지정된 된 확장을 사용 하 여 시작 하는 확장을 사용 하 여 파일을 반환 합니다.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. 예를 들어 "*.xls"는 "book" 및 "book. .xlsx"를 모두 반환 합니다.For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • 다른 모든 경우 메서드는 지정한 확장명을 정확 하 게 일치 하는 파일을 반환 합니다.In all other cases, the method returns files that exactly match the specified extension. 예를 들어 "*ai"는 "file.ai"를 반환 하지만 "file. aif"는 반환 하지 않습니다.For example, "*.ai" returns "file.ai" but not "file.aif".

물음표 와일드 카드 문자를 사용 하는 경우이 메서드는 지정된 된 파일 확장명과 일치 하는 파일에만 반환 합니다.When you use the question mark wildcard character, this method returns only files that match the specified file extension. 예를 들어, 디렉터리에 두 개의 파일 "file1" 및 "file1"이 지정 된 경우 검색 패턴은 "file"입니다. txt "는 첫 번째 파일만 반환 하는 반면" 파일*.txt "검색 패턴은 두 파일을 모두 반환 합니다.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

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 path information with 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.

EnumerateFilesGetFiles 메서드는 다음과 같습니다. EnumerateFiles를 사용 하는 경우 전체 컬렉션이 반환 되기 전에 이름 컬렉션의 열거를 시작할 수 있습니다. GetFiles사용 하는 경우 배열에 액세스할 수 있으려면 전체 이름 배열이 반환 될 때까지 기다려야 합니다.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. 따라서 많은 파일 및 디렉터리를 사용 하는 경우 EnumerateFiles 보다 효율적일 수 있습니다.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

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

EnumerateFiles(String, String, SearchOption)

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

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : 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 files 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 files 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 shows how to retrieve all the text files in a directory and its subdirectories, and move them to a new directory. 파일 이동 되 면 원래 디렉터리에 더 이상 없습니다.After the files are moved, they no longer exist in the original directories.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

파일의 각 줄을 읽은 다음 예제에서는 재귀적으로 확장명이.txt 인 모든 파일을 열거 하 고 "Microsoft" 문자열이 포함 하는 경우 줄을 표시 합니다.The following example recursively enumerates all files that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Microsoft".

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Xml.Linq

Module Module1

    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        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".

참고

"*.txt"와 같은 searchPattern에 별표 와일드 카드 문자를 사용 하는 경우 지정 된 확장의 문자 수는 다음과 같이 검색에 영향을 줍니다.When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • 정확히 3 자 지정한 확장명을 사용 하는 경우 메서드는 지정된 된 확장을 사용 하 여 시작 하는 확장을 사용 하 여 파일을 반환 합니다.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. 예를 들어 "*.xls"는 "book" 및 "book. .xlsx"를 모두 반환 합니다.For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • 다른 모든 경우 메서드는 지정한 확장명을 정확 하 게 일치 하는 파일을 반환 합니다.In all other cases, the method returns files that exactly match the specified extension. 예를 들어 "*ai"는 "file.ai"를 반환 하지만 "file. aif"는 반환 하지 않습니다.For example, "*.ai" returns "file.ai" but not "file.aif".

물음표 와일드 카드 문자를 사용 하는 경우이 메서드는 지정된 된 파일 확장명과 일치 하는 파일에만 반환 합니다.When you use the question mark wildcard character, this method returns only files that match the specified file extension. 예를 들어, 디렉터리에 두 개의 파일 "file1" 및 "file1"이 지정 된 경우 검색 패턴은 "file"입니다. txt "는 첫 번째 파일만 반환 하는 반면" 파일*.txt "검색 패턴은 두 파일을 모두 반환 합니다.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

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 path information with 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.

EnumerateFilesGetFiles 메서드는 다음과 같습니다. EnumerateFiles를 사용 하는 경우 전체 컬렉션이 반환 되기 전에 이름 컬렉션의 열거를 시작할 수 있습니다. GetFiles사용 하는 경우 배열에 액세스할 수 있으려면 전체 이름 배열이 반환 될 때까지 기다려야 합니다.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. 따라서 많은 파일 및 디렉터리를 사용 하는 경우 EnumerateFiles 보다 효율적일 수 있습니다.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

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

EnumerateFiles(String)

지정된 경로에 있는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of full file names in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (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 files 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 shows how to retrieve all the files in a directory and move them to a new directory. 파일 이동 되 면 원래 디렉터리에 더 이상 없습니다.After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

파일의 각 줄을 읽은 다음 예제에서는 지정된 된 디렉터리의 파일을 열거 하 고 "Europe" 문자열이 포함 된 경우 줄을 표시 합니다.The following example enumerates the files in the specified directory, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
            var files = from file in 
                Directory.EnumerateFiles(@"\\archives1\library\")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

설명

path 매개 변수를 사용 하 여 상대 경로 정보를 지정할 수 있습니다.You can specify relative path information with 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.

EnumerateFilesGetFiles 메서드는 다음과 같습니다. EnumerateFiles를 사용 하는 경우 전체 컬렉션이 반환 되기 전에 이름 컬렉션의 열거를 시작할 수 있습니다. GetFiles사용 하는 경우 배열에 액세스할 수 있으려면 전체 이름 배열이 반환 될 때까지 기다려야 합니다.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. 따라서 많은 파일 및 디렉터리를 사용 하는 경우 EnumerateFiles 보다 효율적일 수 있습니다.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

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

EnumerateFiles(String, String)

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.Returns an enumerable collection of full file names that match a search pattern in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (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 files 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 files 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 by using 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 shows how to retrieve all the text files in a directory and move them to a new directory. 파일 이동 되 면 원래 디렉터리에 더 이상 없습니다.After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

파일의 각 줄을 읽은 다음 예제에서는 확장명이.txt 인 지정된 된 디렉터리에 파일을 열거 하 고 "Europe" 문자열이 포함 된 경우 줄을 표시 합니다.The following example enumerates the files in the specified directory that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
            var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
            
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        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".

참고

"*.txt"와 같은 searchPattern에 별표 와일드 카드 문자를 사용 하는 경우 지정 된 확장의 문자 수는 다음과 같이 검색에 영향을 줍니다.When you use the asterisk wildcard character in a searchPattern such as "*.txt", the number of characters in the specified extension affects the search as follows:

  • 정확히 3 자 지정한 확장명을 사용 하는 경우 메서드는 지정된 된 확장을 사용 하 여 시작 하는 확장을 사용 하 여 파일을 반환 합니다.If the specified extension is exactly three characters long, the method returns files with extensions that begin with the specified extension. 예를 들어 "*.xls"는 "book" 및 "book. .xlsx"를 모두 반환 합니다.For example, "*.xls" returns both "book.xls" and "book.xlsx".
  • 다른 모든 경우 메서드는 지정한 확장명을 정확 하 게 일치 하는 파일을 반환 합니다.In all other cases, the method returns files that exactly match the specified extension. 예를 들어 "*ai"는 "file.ai"를 반환 하지만 "file. aif"는 반환 하지 않습니다.For example, "*.ai" returns "file.ai" but not "file.aif".

물음표 와일드 카드 문자를 사용 하는 경우이 메서드는 지정된 된 파일 확장명과 일치 하는 파일에만 반환 합니다.When you use the question mark wildcard character, this method returns only files that match the specified file extension. 예를 들어, 디렉터리에 두 개의 파일 "file1" 및 "file1"이 지정 된 경우 검색 패턴은 "file"입니다. txt "는 첫 번째 파일만 반환 하는 반면" 파일*.txt "검색 패턴은 두 파일을 모두 반환 합니다.For example, given two files, "file1.txt" and "file1.txtother", in a directory, a search pattern of "file?.txt" returns just the first file, whereas a search pattern of "file*.txt" returns both files.

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 path information with 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.

EnumerateFilesGetFiles 메서드는 다음과 같습니다. EnumerateFiles를 사용 하는 경우 전체 컬렉션이 반환 되기 전에 이름 컬렉션의 열거를 시작할 수 있습니다. GetFiles사용 하는 경우 배열에 액세스할 수 있으려면 전체 이름 배열이 반환 될 때까지 기다려야 합니다.The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. 따라서 많은 파일 및 디렉터리를 사용 하는 경우 EnumerateFiles 보다 효율적일 수 있습니다.Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

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

적용 대상