Directory 클래스

정의

디렉터리와 하위 디렉터리에서 만들기, 이동 및 열거를 위한 정적 메서드를 노출합니다. 이 클래스는 상속될 수 없습니다.

public ref class Directory abstract sealed
public ref class Directory sealed
public static class Directory
public sealed class Directory
[System.Runtime.InteropServices.ComVisible(true)]
public static class Directory
type Directory = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Directory = class
Public Class Directory
Public NotInheritable Class Directory
상속
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);
            }
        }
    }
}
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

다음 예제에서는 메서드를 사용하여 EnumerateFiles 디렉터리에서 텍스트 파일 컬렉션을 검색한 다음 쿼리에서 해당 컬렉션을 사용하여 "예제"가 포함된 모든 줄을 찾는 방법을 보여 줍니다.

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

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

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

            foreach (var f in files)
            {
                Console.WriteLine("{0} contains {1}", f.File, f.Line);
            }
            Console.WriteLine("{0} lines found.", files.Count().ToString());
        }
    }
}
open System.IO

let archiveDirectory = @"C:\archive"

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

for f in files do
    printfn $"{f.File} contains {f.Line}"
printfn "{Seq.length files} lines found."
Imports System.IO

Module Module1

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

        Dim files = From retrievedFile In Directory.EnumerateFiles(archiveDirectory, "*.txt", SearchOption.AllDirectories)
                    From line In File.ReadLines(retrievedFile)
                    Where line.Contains("Example")
                    Select New With {.curFile = retrievedFile, .curLine = line}

        For Each f In files
            Console.WriteLine("{0} contains {1}", f.curFile, f.curLine)
        Next
        Console.WriteLine("{0} lines found.", files.Count.ToString())

    End Sub

End Module

다음 예제에서는 디렉터리와 모든 해당 파일을 새 디렉터리로 이동하는 방법을 보여 줍니다. 원래 디렉터리가 이동된 후에는 더 이상 존재하지 않습니다.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\source";
            string destinationDirectory = @"C:\destination";

            try
            {
                Directory.Move(sourceDirectory, destinationDirectory);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
open System.IO

let sourceDirectory = @"C:\source"
let destinationDirectory = @"C:\destination"

try
    Directory.Move(sourceDirectory, destinationDirectory)
with e ->
    printfn $"{e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\source"
        Dim destinationDirectory As String = "C:\destination"

        Try
            Directory.Move(sourceDirectory, destinationDirectory)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

설명

Directory 디렉터리 복사, 이동, 이름 바꾸기, 만들기 및 삭제와 같은 일반적인 작업에 클래스를 사용합니다.

클래스의 Directory 정적 메서드는 모든 메서드에 대해 보안 검사를 수행합니다. 개체를 여러 번 다시 사용하려는 경우 보안 검사가 항상 필요한 것은 아니므로 해당 인스턴스 메서드 DirectoryInfo 를 대신 사용하는 것이 좋습니다.

디렉터리 관련 작업을 하나만 수행하는 경우 해당 DirectoryInfo 인스턴스 메서드보다는 정적 Directory 메서드를 사용하는 것이 더 효율적일 수 있습니다. 대부분의 Directory 메서드에는 조작하는 디렉터리의 경로가 필요합니다.

참고

문자열 path 매개 변수를 허용하는 멤버에서 해당 경로는 올바른 형식이어야 합니다. 그렇지 않으면 예외가 발생합니다. 예를 들어 경로가 정규화되었지만 공백("c:\temp")으로 시작하는 경우 경로 문자열이 트리밍되지 않으므로 경로가 잘못된 형식으로 간주되고 예외가 발생합니다. 또한 경로 또는 경로 조합을 두 번 정규화할 수 없습니다. 예를 들어 "c:\temp c:\windows"도 예외를 발생합니다. 경로 문자열을 허용하는 메서드를 사용할 때 경로가 올바른 형식인지 확인합니다. 자세한 내용은 Path를 참조하세요.

경로를 수락하는 멤버에서 경로는 파일 또는 디렉터리를 참조할 수 있습니다. 서버 및 공유 이름에 대한 전체 경로, 상대 경로 또는 UNC(범용 명명 규칙) 경로를 사용할 수 있습니다. 예를 들어 다음의 모든 경로는 허용 가능한 경로입니다.

  • C#의 "c:\\MyDir" 또는 Visual Basic "c:\MyDir"입니다.

  • C#의 "MyDir\\MySubdir" 또는 Visual Basic "MyDir\MySubDir"입니다.

  • C#의 "\\\\MyServer\\MyShare" 또는 Visual Basic "\\MyServer\MyShare"입니다.

기본적으로 새 디렉터리에 대한 전체 읽기/쓰기 액세스 권한이 모든 사용자에게 부여됩니다. 그러나 앱은 기존 디렉터리에 액세스하기 위한 올바른 보안이 있어야 합니다.

디렉터리와 모든 하위 디렉터리에 대한 권한을 요구하려면 디렉터리 구분 기호 문자로 경로 문자열을 종료합니다. 예를 들어 "C:\Temp\"는 C:\Temp\ 및 모든 하위 디렉터리에 대한 액세스 권한을 부여합니다. 특정 디렉터리에 대해서만 사용 권한을 요구하려면 경로 문자열을 마침표로 종료합니다. (예: "C:\Temp\." 에서는 해당 하위 디렉터리가 아닌 C:\Temp\에 대한 액세스 권한만 부여합니다.)

매개 변수를 searchPattern 허용하는 멤버에서 검색 문자열은 리터럴 문자와 와일드카드 문자 * 2개와 ?의 조합일 수 있습니다. 이 매개 변수는 정규식을 인식하지 못합니다. 자세한 내용은 메서드 또는 매개 변수를 EnumerateDirectories(String, String) 사용하는 다른 메서드를 searchPattern 참조하세요.

일반적인 I/O 작업 목록은 일반적인 I/O 작업을 참조하세요.

DirectoryWindows Microsoft Store DirectoryInfo 앱에서 사용할 수 없습니다. Windows Microsoft Store 앱의 파일 및 폴더에 액세스하는 방법에 대한 자세한 내용은 데이터 및 파일 액세스(Windows Microsoft Store 앱)를 참조하세요.

메서드

CreateDirectory(String)

이미 존재하지 않는 한 지정된 경로에 모든 디렉터리와 하위 디렉터리를 만듭니다.

CreateDirectory(String, DirectorySecurity)

이미 존재하지 않는 경우 지정된 경로에 모든 디렉터리를 만들고 지정된 Windows 보안을 적용합니다.

CreateSymbolicLink(String, String)

을 가리키는 pathToTarget디렉터리 기호 링크를 path 만듭니다.

Delete(String)

지정된 경로에서 빈 디렉터리를 삭제합니다.

Delete(String, Boolean)

지정된 디렉터리와 해당 디렉터리의 하위 디렉터리 및 파일을 삭제합니다.

EnumerateDirectories(String)

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

EnumerateDirectories(String, String)

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

EnumerateDirectories(String, String, EnumerationOptions)

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

EnumerateDirectories(String, String, SearchOption)

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

EnumerateFiles(String)

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

EnumerateFiles(String, String)

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

EnumerateFiles(String, String, EnumerationOptions)

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

EnumerateFiles(String, String, SearchOption)

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

EnumerateFileSystemEntries(String)

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

EnumerateFileSystemEntries(String, String)

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

EnumerateFileSystemEntries(String, String, EnumerationOptions)

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

EnumerateFileSystemEntries(String, String, SearchOption)

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

Exists(String)

지정된 경로가 디스크에 있는 기존 디렉터리를 참조하는지를 확인합니다.

GetAccessControl(String)

지정된 디렉터리의 ACL(액세스 제어 목록) 항목을 캡슐화하는 DirectorySecurity 개체를 가져옵니다.

GetAccessControl(String, AccessControlSections)

지정된 디렉터리의 지정된 ACL(액세스 제어 목록) 항목 형식을 캡슐화하는 DirectorySecurity 개체를 가져옵니다.

GetCreationTime(String)

디렉터리를 만든 날짜와 시간을 가져옵니다.

GetCreationTimeUtc(String)

디렉터리를 만든 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 가져옵니다.

GetCurrentDirectory()

애플리케이션의 현재 작업 디렉터리를 가져옵니다.

GetDirectories(String)

지정된 디렉터리에 있는 하위 디렉터리의 이름(경로 포함)을 반환합니다.

GetDirectories(String, String)

지정된 디렉터리에서 지정된 검색 패턴과 일치하는 하위 디렉터리 이름(파일 경로 포함)을 반환합니다.

GetDirectories(String, String, EnumerationOptions)

지정된 디렉터리에서 지정된 검색 패턴 및 열거형 옵션과 일치하는 하위 디렉터리 이름(파일 경로 포함)을 반환합니다.

GetDirectories(String, String, SearchOption)

지정된 디렉터리에서 지정된 검색 패턴과 일치하는 하위 디렉터리(해당 경로 포함)의 이름을 가져오고 선택적으로 하위 디렉터리를 반환합니다.

GetDirectoryRoot(String)

지정된 경로에 대한 볼륨 정보, 루트 정보 또는 두 정보 모두를 반환합니다.

GetFiles(String)

지정된 디렉터리에 있는 파일의 이름(경로 포함)을 반환합니다.

GetFiles(String, String)

지정된 디렉터리에서 지정된 검색 패턴과 일치하는 파일 이름(파일 경로 포함)을 반환합니다.

GetFiles(String, String, EnumerationOptions)

지정된 디렉터리에서 지정된 검색 패턴 및 열거형 옵션과 일치하는 파일 이름(파일 경로 포함)을 반환합니다.

GetFiles(String, String, SearchOption)

하위 디렉터리를 검색할지를 나타내는 값을 사용하여 지정된 디렉터리에서 지정된 검색 패턴과 일치하는 파일 이름(파일 경로 포함)을 반환합니다.

GetFileSystemEntries(String)

지정된 경로에 있는 모든 파일과 하위 디렉터리의 이름을 반환합니다.

GetFileSystemEntries(String, String)

지정된 경로에서 검색 패턴과 일치하는 파일 및 디렉터리 이름 배열을 반환합니다.

GetFileSystemEntries(String, String, EnumerationOptions)

지정된 경로에서 검색 패턴 및 열거형 옵션과 일치하는 파일 이름 및 디렉터리 이름의 배열을 반환합니다.

GetFileSystemEntries(String, String, SearchOption)

지정된 경로에서 검색 패턴과 일치하는 모든 파일 이름 및 디렉터리 이름의 배열을 가져오고 선택적으로 하위 디렉터리를 반환합니다.

GetLastAccessTime(String)

지정된 파일 또는 디렉터리를 마지막으로 액세스한 날짜와 시간을 반환합니다.

GetLastAccessTimeUtc(String)

지정된 파일 또는 디렉터리에 마지막으로 액세스한 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 반환합니다.

GetLastWriteTime(String)

지정된 파일 또는 디렉터리를 마지막으로 쓴 날짜와 시간을 반환합니다.

GetLastWriteTimeUtc(String)

지정된 파일이나 디렉터리에 마지막으로 쓴 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 반환합니다.

GetLogicalDrives()

해당 컴퓨터에서 "<드라이브 문자>:\"의 형식으로 논리 드라이브 이름을 검색합니다.

GetParent(String)

지정된 경로의 절대 경로와 상대 경로를 모두 포함한 부모 디렉터리를 검색합니다.

Move(String, String)

파일 또는 디렉터리와 그 내용을 새 위치로 이동합니다.

ResolveLinkTarget(String, Boolean)

지정된 디렉터리 링크의 대상을 가져옵니다.

SetAccessControl(String, DirectorySecurity)

DirectorySecurity 개체에서 설명하는 ACL(액세스 제어 목록) 항목을 지정된 디렉터리에 적용합니다.

SetCreationTime(String, DateTime)

지정된 파일 또는 디렉터리에 대한 만든 날짜와 시간을 설정합니다.

SetCreationTimeUtc(String, DateTime)

지정된 파일이나 디렉터리를 만든 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 설정합니다.

SetCurrentDirectory(String)

애플리케이션의 현재 작업 디렉터리를 지정된 디렉터리로 설정합니다.

SetLastAccessTime(String, DateTime)

지정된 파일 또는 디렉터리를 마지막으로 액세스한 날짜와 시간을 설정합니다.

SetLastAccessTimeUtc(String, DateTime)

지정된 파일 또는 디렉터리에 마지막으로 액세스한 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 설정합니다.

SetLastWriteTime(String, DateTime)

디렉터리를 마지막으로 쓴 날짜와 시간을 설정합니다.

SetLastWriteTimeUtc(String, DateTime)

디렉터리에 마지막으로 쓴 날짜와 시간을 UTC(Coordinated Universal Time) 형식으로 설정합니다.

적용 대상

추가 정보