다음을 통해 공유


Directory.EnumerateFiles 메서드

정의

지정된 조건을 충족하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.

오버로드

EnumerateFiles(String, String, SearchOption)

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.

EnumerateFiles(String, String, EnumerationOptions)

지정된 경로에서 검색 패턴 및 열거형 옵션과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.

EnumerateFiles(String)

지정된 경로에 있는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles(String, String)

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles(String, String, SearchOption)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.

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>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)

매개 변수

path
String

검색할 디렉터리에 대한 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.

searchPattern
String

path에 있는 파일 이름과 일치하는지 비교할 검색 문자열입니다. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.

searchOption
SearchOption

검색 작업에 현재 디렉터리만 포함할지 아니면 모든 하위 디렉터리를 포함할지를 지정하는 열거형 값 중 하나입니다. 기본값은 TopDirectoryOnly입니다.

반환

path에서 지정된 디렉토리에 있고 지정된 검색 패턴 및 검색 옵션과 일치하는 파일에 대한 전체 이름(경로 포함)의 열거 가능 컬렉션입니다.

예외

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

또는

searchPattern에 유효한 패턴이 포함되어 있지 않습니다.

path이(가) null인 경우

또는

searchPatternnull입니다.

searchOption는 유효한 SearchOption 값이 아닙니다.

path가 잘못되었습니다(예: 매핑되지 않은 드라이브 참조).

path는 파일 이름입니다.

지정된 경로, 파일 이름 또는 이 둘의 조합이 시스템에서 정의한 최대 길이를 초과합니다.

호출자에게 필요한 권한이 없는 경우

호출자에게 필요한 권한이 없는 경우

예제

다음 예제에서는 디렉터리와 해당 하위 디렉터리의 모든 텍스트 파일을 검색하고 새 디렉터리로 이동하는 방법을 보여 있습니다. 파일을 이동한 후에는 원래 디렉터리에 더 이상 존재하지 않습니다.

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);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{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" 문자열이 포함된 경우 줄을 표시합니다.

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);
        }
    }
}
open System
open System.IO

try
    // Set a variable to the My Documents path.
    let docPath =
        Environment.GetFolderPath Environment.SpecialFolder.MyDocuments

    let files =
        query {
            for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
            for line in File.ReadLines file do
            where (line.Contains "Microsoft")
            select {| File = file; Line = line |}
        }

    for f in files do
        printfn $"{f.File}\t{f.Line}"
    printfn $"{Seq.length files} files found."

with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{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.

와일드카드 지정자 일치하는 항목
*(별표) 해당 위치에 0개 이상의 문자가 있습니다.
? (물음표) 해당 위치에 정확히 한 문자가 있습니다.

와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 의 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 의 모든 이름을 검색합니다.

참고

.NET Framework 전용: 에서 searchPattern 별표 와일드카드 문자를 사용하고 3자 파일 확장명(예: "*.txt")을 지정하는 경우 이 메서드는 지정된 확장으로 시작하는 확장명을 가진 파일도 반환합니다. 예를 들어 검색 패턴 "*.xls"은 "book.xls" 및 "book.xlsx"를 모두 반환합니다. 이 동작은 검색 패턴에서 별표가 사용되고 제공된 파일 확장자가 정확히 3자인 경우에만 발생합니다. 검색 패턴의 어딘가에 물음표 와일드카드 문자를 사용하는 경우 이 메서드는 지정된 파일 확장명과 정확히 일치하는 파일만 반환합니다. 다음 표에서는 .NET Framework 이 변칙을 보여 줍니다.

디렉터리의 파일 검색 패턴 .NET 5+ 반환 .NET Framework 반환
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") 뒤에 DirectorySeparatorChar 또는 AltDirectorySeparatorChar를 포함할 수 없으며 잘못된 문자를 포함할 수도 없습니다. GetInvalidPathChars 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

매개 변수를 path 사용하여 상대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 메서드를 사용하여 GetCurrentDirectory 확인할 수 있는 현재 작업 디렉터리를 기준으로 해석됩니다.

GetFiles 메서드는 EnumerateFiles 다음과 같이 다릅니다. 를 사용하는 EnumerateFiles경우 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 를 사용하는 GetFiles경우 배열에 액세스하기 전에 전체 이름 배열이 반환될 때까지 기다려야 합니다. 따라서 많은 파일 및 디렉터리 EnumerateFiles 로 작업할 때 보다 효율적일 수 있습니다.

반환된 컬렉션은 캐시되지 않습니다. 컬렉션에서 를 GetEnumerator 호출할 때마다 새 열거형이 시작됩니다.

적용 대상

EnumerateFiles(String, String, EnumerationOptions)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

지정된 경로에서 검색 패턴 및 열거형 옵션과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환하고 선택적으로 하위 디렉터리를 검색합니다.

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>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)

매개 변수

path
String

검색할 디렉터리에 대한 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.

searchPattern
String

path에 있는 파일 이름과 일치하는지 비교할 검색 문자열입니다. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.

enumerationOptions
EnumerationOptions

사용할 검색 및 열거형 구성을 설명하는 개체입니다.

반환

path로 지정되고 지정된 검색 패턴 및 옵션과 일치하는 디렉터리에서 파일에 대한 전체 이름(경로 포함)의 열거 가능 컬렉션입니다.

예외

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

또는

searchPattern에 유효한 패턴이 포함되어 있지 않습니다.

path이(가) null인 경우

또는

searchPatternnull입니다.

searchOption는 유효한 SearchOption 값이 아닙니다.

path가 잘못되었습니다(예: 매핑되지 않은 드라이브 참조).

path는 파일 이름입니다.

지정된 경로, 파일 이름 또는 이 둘의 조합이 시스템에서 정의한 최대 길이를 초과합니다.

호출자에게 필요한 권한이 없는 경우

설명

searchPattern 는 리터럴 문자와 와일드카드 문자의 조합일 수 있지만 정규식을 지원하지는 않습니다. 에서 허용되는 와일드카드 지정자는 다음과 같습니다 searchPattern.

와일드카드 지정자 일치하는 항목
*(별표) 해당 위치에 0개 이상의 문자가 있습니다.
? (물음표) 해당 위치에 정확히 한 문자가 있습니다.

와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 의 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 의 모든 이름을 검색합니다.

참고

.NET Framework 전용: 에서 searchPattern 별표 와일드카드 문자를 사용하고 3자 파일 확장명(예: "*.txt")을 지정하는 경우 이 메서드는 지정된 확장으로 시작하는 확장명을 가진 파일도 반환합니다. 예를 들어 검색 패턴 "*.xls"은 "book.xls" 및 "book.xlsx"를 모두 반환합니다. 이 동작은 검색 패턴에서 별표가 사용되고 제공된 파일 확장자가 정확히 3자인 경우에만 발생합니다. 검색 패턴의 어딘가에 물음표 와일드카드 문자를 사용하는 경우 이 메서드는 지정된 파일 확장명과 정확히 일치하는 파일만 반환합니다. 다음 표에서는 .NET Framework 이 변칙을 보여 줍니다.

디렉터리의 파일 검색 패턴 .NET 5+ 반환 .NET Framework 반환
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") 뒤에 DirectorySeparatorChar 또는 AltDirectorySeparatorChar를 포함할 수 없으며 잘못된 문자를 포함할 수도 없습니다. GetInvalidPathChars 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

매개 변수를 path 사용하여 상대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 메서드를 사용하여 GetCurrentDirectory 확인할 수 있는 현재 작업 디렉터리를 기준으로 해석됩니다.

GetFiles 메서드는 EnumerateFiles 다음과 같이 다릅니다. 를 사용하는 EnumerateFiles경우 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 를 사용하는 GetFiles경우 배열에 액세스하기 전에 전체 이름 배열이 반환될 때까지 기다려야 합니다. 따라서 많은 파일 및 디렉터리 EnumerateFiles 로 작업할 때 보다 효율적일 수 있습니다.

반환된 컬렉션은 캐시되지 않습니다. 컬렉션에서 를 GetEnumerator 호출할 때마다 새 열거형이 시작됩니다.

적용 대상

EnumerateFiles(String)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

지정된 경로에 있는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.

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

검색할 디렉터리에 대한 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.

반환

path로 지정된 파일에서 디렉터리에 대한 전체 이름(경로 포함)의 열거 가능 컬렉션입니다.

예외

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

path이(가) null인 경우

path가 잘못되었습니다(예: 매핑되지 않은 드라이브 참조).

path는 파일 이름입니다.

지정된 경로, 파일 이름 또는 이 둘의 조합이 시스템에서 정의한 최대 길이를 초과합니다.

호출자에게 필요한 권한이 없는 경우

호출자에게 필요한 권한이 없는 경우

예제

다음 예제에서는 디렉터리의 모든 파일을 검색하고 새 디렉터리로 이동하는 방법을 보여줍니다. 파일을 이동한 후에는 원래 디렉터리에 더 이상 존재하지 않습니다.

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);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles sourceDirectory

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
    printfn $"{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"이 포함된 경우 줄을 표시합니다.

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);
        }
    }
}
open System
open System.IO

try
    // All files containing the word 'Europe'.
    let files =
        Directory.EnumerateFiles @"\\archives1\library\"
        |> Seq.filter (fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

with 
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{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 사용하여 상대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 메서드를 사용하여 GetCurrentDirectory 확인할 수 있는 현재 작업 디렉터리를 기준으로 해석됩니다.

GetFiles 메서드는 EnumerateFiles 다음과 같이 다릅니다. 를 사용하는 EnumerateFiles경우 전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 를 사용하는 GetFiles경우 배열에 액세스하기 전에 전체 이름 배열이 반환될 때까지 기다려야 합니다. 따라서 많은 파일 및 디렉터리 EnumerateFiles 로 작업할 때 보다 효율적일 수 있습니다.

반환된 컬렉션은 캐시되지 않습니다. 컬렉션에서 에 GetEnumerator 대한 각 호출은 새 열거형을 시작합니다.

적용 대상

EnumerateFiles(String, String)

Source:
Directory.cs
Source:
Directory.cs
Source:
Directory.cs

지정된 경로에서 검색 패턴과 일치하는 전체 파일 이름의 열거 가능 컬렉션을 반환합니다.

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

검색할 디렉터리에 대한 상대 또는 절대 경로입니다. 이 문자열은 대/소문자를 구분하지 않습니다.

searchPattern
String

path에 있는 파일 이름과 일치하는지 비교할 검색 문자열입니다. 이 매개 변수는 유효한 리터럴 경로와 와일드카드(* 및 ?) 문자로 된 조합을 포함하지만 정규식을 지원하지 않습니다.

반환

path로 지정되고 지정된 검색 패턴과 일치하는 디렉터리에서 파일에 대한 전체 이름(경로 포함)의 열거 가능 컬렉션입니다.

예외

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 잘못된 문자를 포함합니다. GetInvalidPathChars() 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

또는

searchPattern에 유효한 패턴이 포함되어 있지 않습니다.

path이(가) null인 경우

또는

searchPattern이(가) null인 경우

path가 잘못되었습니다(예: 매핑되지 않은 드라이브 참조).

path는 파일 이름입니다.

지정된 경로, 파일 이름 또는 이 둘의 조합이 시스템에서 정의한 최대 길이를 초과합니다.

호출자에게 필요한 권한이 없는 경우

호출자에게 필요한 권한이 없는 경우

예제

다음 예제에서는 디렉터리의 모든 텍스트 파일을 검색하고 새 디렉터리로 이동하는 방법을 보여줍니다. 파일을 이동한 후에는 원래 디렉터리에 더 이상 존재하지 않습니다.

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);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"

try
    let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

    for currentFile in txtFiles do
        let fileName = currentFile.Substring(sourceDirectory.Length + 1)
        Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))

with e ->
    printfn $"{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"이 포함된 경우 줄을 표시합니다.

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);
        }
    }
}
open System
open System.IO

try
    // All .txt files containing the word 'Europe'.
    let files = 
        Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
        |> Seq.filter(fun file -> file.ToLower().Contains "europe")

    for file in files do
        printfn $"{file}"
    printfn $"{Seq.length files} files found."

with
| :? UnauthorizedAccessException as uaEx ->
    printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
    printfn $"{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.

와일드카드 지정자 일치하는 항목
*(별표) 해당 위치에 0개 이상의 문자가 있습니다.
? (물음표) 해당 위치에 정확히 한 문자가 있습니다.

와일드카드 이외의 문자는 리터럴 문자입니다. 예를 들어 searchPattern 문자열 "*t"는 문자 "t"로 끝나는 의 모든 이름을 path 검색합니다. 문자열 "s*"는 searchPattern 문자 "s"로 path 시작하는 의 모든 이름을 검색합니다.

참고

.NET Framework 전용: 에서 searchPattern 별표 와일드카드 문자를 사용하고 3자 파일 확장명(예: "*.txt")을 지정하는 경우 이 메서드는 지정된 확장으로 시작하는 확장명을 가진 파일도 반환합니다. 예를 들어 검색 패턴 "*.xls"은 "book.xls" 및 "book.xlsx"를 모두 반환합니다. 이 동작은 검색 패턴에서 별표가 사용되고 제공된 파일 확장자가 정확히 3자인 경우에만 발생합니다. 검색 패턴의 어딘가에 물음표 와일드카드 문자를 사용하는 경우 이 메서드는 지정된 파일 확장명과 정확히 일치하는 파일만 반환합니다. 다음 표에서는 .NET Framework 이 변칙을 보여 줍니다.

디렉터리의 파일 검색 패턴 .NET 5+ 반환 .NET Framework 반환
file.ai, file.aif *.Ai file.ai file.ai
book.xls, book.xlsx *.xls book.xls book.xls, book.xlsx
ello.txt, hello.txt, hello.txtt ?ello.txt hello.txt hello.txt

searchPattern 는 두 개의 마침표("..")로 끝나거나 두 개의 마침표("..") 뒤에 DirectorySeparatorChar 또는 AltDirectorySeparatorChar를 포함할 수 없으며 잘못된 문자를 포함할 수도 없습니다. GetInvalidPathChars 메서드를 사용하여 잘못된 문자를 쿼리할 수 있습니다.

매개 변수를 path 사용하여 상대 경로 정보를 지정할 수 있습니다. 상대 경로 정보는 메서드를 사용하여 GetCurrentDirectory 확인할 수 있는 현재 작업 디렉터리를 기준으로 해석됩니다.

및 메서드는 EnumerateFiles 다음과 같이 다릅니다. 를 사용하면 EnumerateFiles전체 컬렉션이 반환되기 전에 이름 컬렉션을 열거할 수 있습니다. 를 사용하는 GetFiles경우 전체 이름 배열이 반환될 때까지 기다려야 배열에 액세스할 수 GetFiles 있습니다. 따라서 많은 파일 및 디렉터리 EnumerateFiles 로 작업할 때 보다 효율적일 수 있습니다.

반환된 컬렉션은 캐시되지 않습니다. 컬렉션의 에 GetEnumerator 대한 각 호출은 새 열거형을 시작합니다.

적용 대상