다음을 통해 공유


DirectoryInfo 클래스

정의

디렉터리 및 하위 디렉터리를 만들고, 이동하고, 열거하는 인스턴스 메서드를 노출합니다. 이 클래스는 상속될 수 없습니다.

public ref class DirectoryInfo sealed : System::IO::FileSystemInfo
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DirectoryInfo : System.IO.FileSystemInfo
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
type DirectoryInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DirectoryInfo = class
    inherit FileSystemInfo
Public NotInheritable Class DirectoryInfo
Inherits FileSystemInfo
상속
DirectoryInfo
상속
특성

예제

다음 예제에서는 클래스의 기본 멤버 중 일부를 보여 줍니다DirectoryInfo.

using namespace System;
using namespace System::IO;
int main()
{
   
   // Specify the directories you want to manipulate.
   DirectoryInfo^ di = gcnew DirectoryInfo( "c:\\MyDir" );
   try
   {
      
      // Determine whether the directory exists.
      if ( di->Exists )
      {
         
         // Indicate that the directory already exists.
         Console::WriteLine( "That path exists already." );
         return 0;
      }
      
      // Try to create the directory.
      di->Create();
      Console::WriteLine( "The directory was created successfully." );
      
      // Delete the directory.
      di->Delete();
      Console::WriteLine( "The directory was deleted successfully." );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directories you want to manipulate.
        DirectoryInfo di = new DirectoryInfo(@"c:\MyDir");
        try
        {
            // Determine whether the directory exists.
            if (di.Exists)
            {
                // Indicate that the directory already exists.
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            di.Create();
            Console.WriteLine("The directory was created successfully.");

            // Delete the directory.
            di.Delete();
            Console.WriteLine("The directory was deleted successfully.");
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}
open System.IO

// Specify the directories you want to manipulate.
let di = DirectoryInfo @"c:\MyDir"
try
    // Determine whether the directory exists.
    if di.Exists then
        // Indicate that the directory already exists.
        printfn "That path exists already."
    else
        // Try to create the directory.
        di.Create()
        printfn "The directory was created successfully."

        // Delete the directory.
        di.Delete()
        printfn "The directory was deleted successfully."
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        ' Specify the directories you want to manipulate.
        Dim di As DirectoryInfo = New DirectoryInfo("c:\MyDir")
        Try
            ' Determine whether the directory exists.
            If di.Exists Then
                ' Indicate that it already exists.
                Console.WriteLine("That path exists already.")
                Return
            End If

            ' Try to create the directory.
            di.Create()
            Console.WriteLine("The directory was created successfully.")

            ' Delete the directory.
            di.Delete()
            Console.WriteLine("The directory was deleted successfully.")

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

다음 예제에서는 디렉터리와 해당 내용을 복사하는 방법을 보여 줍니다.

using System;
using System.IO;

class CopyDir
{
    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        if (source.FullName.ToLower() == target.FullName.ToLower())
        {
            return;
        }

        // Check if the target directory exists, if not, create it.
        if (Directory.Exists(target.FullName) == false)
        {
            Directory.CreateDirectory(target.FullName);
        }

        // Copy each file into it's new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }

    public static void Main()
    {
        string sourceDirectory = @"c:\sourceDirectory";
        string targetDirectory = @"c:\targetDirectory";

        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    // Output will vary based on the contents of the source directory.
}
open System.IO

let rec copyAll (source: DirectoryInfo) (target: DirectoryInfo) =
    if source.FullName.ToLower() <> target.FullName.ToLower() then
        // Check if the target directory exists, if not, create it.
        if not (Directory.Exists target.FullName) then
            Directory.CreateDirectory target.FullName |> ignore

        // Copy each file into it's new directory.
        for fi in source.GetFiles() do
            printfn $@"Copying {target.FullName}\{fi.Name}"
            fi.CopyTo(Path.Combine(string target, fi.Name), true) |> ignore

        // Copy each subdirectory using recursion.
        for diSourceSubDir in source.GetDirectories() do
            target.CreateSubdirectory diSourceSubDir.Name
            |> copyAll diSourceSubDir

let sourceDirectory = @"c:\sourceDirectory"
let targetDirectory = @"c:\targetDirectory"

let diSource = DirectoryInfo sourceDirectory
let diTarget = DirectoryInfo targetDirectory

copyAll diSource diTarget

// Output will vary based on the contents of the source directory.
Imports System.IO

Class CopyDir
    Shared Sub CopyAll(ByVal source As DirectoryInfo, ByVal target As DirectoryInfo)
        If (source.FullName.ToLower() = target.FullName.ToLower()) Then
            Return
        End If

        ' Check if the target directory exists, if not, create it.
        If Directory.Exists(target.FullName) = False Then
            Directory.CreateDirectory(target.FullName)
        End If

        ' Copy each file into it's new directory.
        For Each fi As FileInfo In source.GetFiles()
            Console.WriteLine("Copying {0}\{1}", target.FullName, fi.Name)
            fi.CopyTo(Path.Combine(target.ToString(), fi.Name), True)
        Next

        ' Copy each subdirectory using recursion.
        For Each diSourceSubDir As DirectoryInfo In source.GetDirectories()
            Dim nextTargetSubDir As DirectoryInfo = target.CreateSubdirectory(diSourceSubDir.Name)
            CopyAll(diSourceSubDir, nextTargetSubDir)
        Next
    End Sub

    Shared Sub Main()
        Dim sourceDirectory As String = "c:\\sourceDirectory"
        Dim targetDirectory As String = "c:\\targetDirectory"

        Dim diSource As DirectoryInfo = New DirectoryInfo(sourceDirectory)
        Dim diTarget As DirectoryInfo = New DirectoryInfo(targetDirectory)

        CopyAll(diSource, diTarget)
    End Sub
    ' Output will vary based on the contents of the source directory.
End Class

설명

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

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

참고

경로를 입력 문자열로 수락하는 멤버에서 해당 경로는 올바른 형식이어야 합니다. 그렇지 않으면 예외가 발생합니다. 예를 들어 경로가 정규화되었지만 공백으로 시작하는 경우 경로는 클래스의 메서드에서 트리밍되지 않습니다. 따라서 경로 형식이 잘못되고 예외가 발생합니다. 마찬가지로 경로 또는 경로 조합을 두 번 정규화할 수 없습니다. 예를 들어 "c:\temp c:\windows"는 대부분의 경우 예외를 발생합니다. 경로 문자열을 허용하는 메서드를 사용할 때 경로가 올바른 형식인지 확인합니다.

경로를 허용하는 멤버에서 경로는 파일 또는 디렉터리만 참조할 수 있습니다. 지정된 경로는 서버 및 공유 이름에 대한 상대 경로 또는 UNC(범용 명명 규칙) 경로를 참조할 수도 있습니다. 예를 들어 다음 모두 허용되는 경로입니다.

  • C#의 "c:\\MyDir\\MyFile.txt" 또는 Visual Basic의 "c:\MyDir\MyFile.txt".

  • C#의 "c:\\MyDir" 또는 Visual Basic의 "c:\MyDir"

  • C#의 "MyDir\\MySubdir" 또는 Visual Basic의 "MyDir\MySubDir"

  • C#의 "\\\\MyServer\\MyShare", Visual Basic의 "\\MyServer\MyShare"

기본적으로 새 디렉터리에 대한 전체 읽기/쓰기 액세스 권한은 모든 사용자에게 부여됩니다.

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

생성자

DirectoryInfo(String)

지정된 경로를 사용하여 DirectoryInfo 클래스의 새 인스턴스를 초기화합니다.

필드

FullPath

파일이나 디렉터리의 정규화된 경로를 나타냅니다.

(다음에서 상속됨 FileSystemInfo)
OriginalPath

사용자가 원래 지정한 상대 또는 절대 경로입니다.

(다음에서 상속됨 FileSystemInfo)

속성

Attributes

현재 파일 또는 디렉터리의 특성을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
CreationTime

현재 파일 또는 디렉터리를 만든 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
CreationTimeUtc

현재 파일 또는 디렉터리를 만든 시간을 UTC(협정 세계시) 기준으로 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
Exists

디렉터리가 있는지를 나타내는 값을 가져옵니다.

Extension

전체 파일 이름인 경우에도 선행 점을 . 포함하여 파일 이름의 확장명 부분을 가져오거나 확장명 없는 경우 빈 문자열을 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
FullName

디렉터리의 전체 경로를 가져옵니다.

FullName

파일이나 디렉터리의 전체 경로를 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
LastAccessTime

현재 파일이나 디렉터리에 마지막으로 액세스한 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastAccessTimeUtc

현재 파일이나 디렉터리를 마지막으로 액세스한 시간을 UTC 기준으로 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastWriteTime

현재 파일이나 디렉터리에 마지막으로 쓴 시간을 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LastWriteTimeUtc

현재 파일이나 디렉터리에 마지막으로 쓴 시간을 UTC 기준으로 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)
LinkTarget

FullName있는 링크의 대상 경로를 가져오거나 nullFileSystemInfo instance 링크를 나타내지 않는 경우 입니다.

(다음에서 상속됨 FileSystemInfo)
Name

DirectoryInfo 인스턴스의 이름을 가져옵니다.

Parent

지정된 하위 디렉터리의 부모 디렉터리를 가져옵니다.

Root

디렉터리의 루트 부분을 가져옵니다.

UnixFileMode

현재 파일 또는 디렉터리에 대한 Unix 파일 모드를 가져오거나 설정합니다.

(다음에서 상속됨 FileSystemInfo)

메서드

Create()

디렉터리를 만듭니다.

Create(DirectorySecurity)

DirectorySecurity 개체를 사용하여 디렉터리를 만듭니다.

CreateAsSymbolicLink(String)

지정된 pathToTarget를 가리키는 에 있는 FullName 기호 링크를 만듭니다.

(다음에서 상속됨 FileSystemInfo)
CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
CreateSubdirectory(String)

지정된 경로에 하위 디렉터리를 하나 이상 만듭니다. 지정된 경로는 DirectoryInfo 클래스의 이 인스턴스에 대한 상대적 경로일 수 있습니다.

CreateSubdirectory(String, DirectorySecurity)

지정된 경로에 지정된 보안을 사용하여 하위 디렉터리를 하나 이상 만듭니다. 지정된 경로는 DirectoryInfo 클래스의 이 인스턴스에 대한 상대적 경로일 수 있습니다.

Delete()

DirectoryInfo가 비어 있으면 이를 삭제합니다.

Delete(Boolean)

하위 디렉터리와 파일을 삭제할지 여부를 지정하여 DirectoryInfo의 이 인스턴스를 삭제합니다.

EnumerateDirectories()

현재 디렉터리에 있는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateDirectories(String)

지정된 검색 패턴과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateDirectories(String, EnumerationOptions)

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

EnumerateDirectories(String, SearchOption)

지정된 검색 패턴 및 하위 디렉터리 검색 옵션과 일치하는 디렉터리 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles()

현재 디렉터리에 있는 파일 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles(String)

검색 패턴과 일치하는 파일 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles(String, EnumerationOptions)

지정된 검색 패턴 및 열거형 옵션과 일치하는 파일 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFiles(String, SearchOption)

지정된 검색 패턴 및 하위 디렉터리 검색 옵션과 일치하는 파일 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFileSystemInfos()

현재 디렉터리에 있는 파일 시스템 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFileSystemInfos(String)

지정된 검색 패턴과 일치하는 파일 시스템 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFileSystemInfos(String, EnumerationOptions)

지정된 검색 패턴 및 열거형 옵션과 일치하는 파일 시스템 정보의 열거 가능 컬렉션을 반환합니다.

EnumerateFileSystemInfos(String, SearchOption)

지정된 검색 패턴 및 하위 디렉터리 검색 옵션과 일치하는 파일 시스템 정보의 열거 가능 컬렉션을 반환합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetAccessControl()

현재 DirectorySecurity 개체에서 설명하는 디렉터리의 ACL(액세스 제어 목록) 항목을 캡슐화하는 DirectoryInfo 개체를 가져옵니다.

GetAccessControl(AccessControlSections)

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

GetDirectories()

현재 디렉터리의 하위 디렉터리를 반환합니다.

GetDirectories(String)

주어진 검색 조건에 일치하는 현재 DirectoryInfo에 있는 디렉터리의 배열을 반환합니다.

GetDirectories(String, EnumerationOptions)

지정된 검색 패턴 및 열거 옵션과 일치하는 현재 DirectoryInfo의 디렉터리배열을 반환합니다.

GetDirectories(String, SearchOption)

하위 디렉터리를 검색할지 여부를 나타내는 값을 사용하여 현재 DirectoryInfo에서 지정된 검색 조건과 일치하는 디렉터리의 배열을 반환합니다.

GetFiles()

현재 디렉터리에서 파일 목록을 반환합니다.

GetFiles(String)

현재 디렉터리에서 지정된 검색 패턴과 일치하는 파일 목록을 반환합니다.

GetFiles(String, EnumerationOptions)

지정된 검색 패턴 및 열거 옵션과 일치하는 현재 디렉터리의 파일 목록을 반환합니다.

GetFiles(String, SearchOption)

하위 디렉터리를 검색할지 여부를 나타내는 값을 사용하여 현재 디렉터리에서 지정된 검색 패턴과 일치하는 파일 목록을 반환합니다.

GetFileSystemInfos()

디렉터리의 모든 파일과 하위 디렉터리를 나타내는 강력한 형식의 FileSystemInfo 엔트리 배열을 반환합니다.

GetFileSystemInfos(String)

지정된 검색 조건과 일치하는 파일 및 하위 디렉터리를 나타내는 강력한 형식의 FileSystemInfo 개체 배열을 검색합니다.

GetFileSystemInfos(String, EnumerationOptions)

지정된 검색 패턴 및 열거형 옵션과 일치하는 파일 및 하위 디렉터리를 나타내는 강력한 형식의 FileSystemInfo 개체 배열을 검색합니다.

GetFileSystemInfos(String, SearchOption)

지정된 검색 조건과 일치하는 파일 및 하위 디렉터리를 나타내는 FileSystemInfo 개체 배열을 검색합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다.

(다음에서 상속됨 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)
사용되지 않음.

파일 이름 및 추가 예외 정보를 사용하여 SerializationInfo 개체를 설정합니다.

(다음에서 상속됨 FileSystemInfo)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
InitializeLifetimeService()
사용되지 않음.

이 인스턴스의 수명 정책을 제어하는 수명 서비스 개체를 가져옵니다.

(다음에서 상속됨 MarshalByRefObject)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
MoveTo(String)

DirectoryInfo 인스턴스 및 해당 내용을 새 경로로 이동합니다.

Refresh()

개체의 상태를 새로 고칩니다.

(다음에서 상속됨 FileSystemInfo)
ResolveLinkTarget(Boolean)

지정된 링크의 대상을 가져옵니다.

(다음에서 상속됨 FileSystemInfo)
SetAccessControl(DirectorySecurity)

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

ToString()

DirectoryInfo 생성자에 전달된 원래 경로를 반환합니다. 전체 경로 또는 파일/디렉터리 이름에는 이 메서드 대신 FullName 또는 Name 속성을 사용합니다.

ToString()

원래 경로를 반환합니다. 전체 경로 또는 파일/디렉터리 이름의 FullName 또는 Name 속성을 사용합니다.

(다음에서 상속됨 FileSystemInfo)

확장 메서드

Create(DirectoryInfo, DirectorySecurity)

지정된 디렉터리 보안을 사용하여 새 파일 디렉터리를 만듭니다. 디렉터리가 이미 있는 경우 아무 작업도 수행되지 않습니다.

GetAccessControl(DirectoryInfo)

디렉터리의 보안 정보를 반환합니다.

GetAccessControl(DirectoryInfo, AccessControlSections)

디렉터리의 보안 정보를 반환합니다.

SetAccessControl(DirectoryInfo, DirectorySecurity)

기존 디렉터리의 보안 특성을 변경합니다.

적용 대상

추가 정보