내보내기(0) 인쇄
모두 확장

Directory 클래스

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

네임스페이스: System.IO
어셈블리: mscorlib(mscorlib.dll)

[ComVisibleAttribute(true)] 
public static class Directory
/** @attribute ComVisibleAttribute(true) */ 
public final class Directory
ComVisibleAttribute(true) 
public final class Directory

디렉터리의 복사, 이동, 이름 바꾸기 및 삭제와 같은 일반적인 작업을 수행하는 데 Directory 클래스를 사용할 수 있습니다. 또한 디렉터리의 생성, 액세스 및 쓰기와 관련된 DateTime 정보를 얻고 설정하는 경우에도 Directory 클래스를 사용할 수 있습니다.

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

Directory 클래스의 정적 메서드는 모든 메서드에 대해 보안 검사를 수행합니다. 따라서 개체를 여러 번 다시 사용해야 하는 경우 정적 메서드에 대응되는 DirectoryInfo 인스턴스 메서드를 사용할 수 있으며, 이 메서드는 보안 검사가 필수적이지 않습니다.

Note참고

입력 문자열로 경로를 받아들이는 멤버의 경우 해당 경로는 제대로 구성되어야 합니다. 그렇지 않으면 예외가 발생합니다. 예를 들어, 경로가 정규화된 경로이지만 공백으로 시작하면 클래스의 메서드에서 경로가 트리밍되지 않습니다. 따라서 경로가 잘못되고 예외가 발생합니다. 비슷하게 경로나 경로 조합은 두 번 정규화될 수 없습니다. 예를 들어, "c:\temp c:\windows"는 대부분의 경우에 예외를 발생시킵니다. 경로 문자열이 적용되는 메서드를 사용할 경우 해당 경로가 제대로 구성되었는지 확인해야 합니다.

경로가 적용되는 멤버에서 경로는 파일이나 디렉터리를 참조할 수 있습니다. 또한 지정된 경로는 서버와 공유 이름의 상대 경로나 UNC(Universal Naming Convention) 경로를 나타낼 수 있습니다. 예를 들어, 다음과 같은 경로를 사용할 수 있습니다.

  • 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\.").

다음 표에서는 일반적인 예 또는 관련된 I/O 작업의 예를 보여 줍니다.

수행 작업

참조 항목

텍스트 파일을 만듭니다.

방법: 파일에 텍스트 쓰기

텍스트 파일에 씁니다.

방법: 파일에 텍스트 쓰기

텍스트 파일에서 읽습니다.

방법: 파일의 텍스트 읽기

디렉터리 이름을 바꾸거나 이동합니다.

Directory.Move

DirectoryInfo.MoveTo

디렉터리를 삭제합니다.

Directory.Delete

DirectoryInfo.Delete

디렉터리를 만듭니다.

CreateDirectory

Directory

하위 디렉터리를 만듭니다.

CreateSubdirectory

디렉터리의 파일을 참조하십시오.

Name

디렉터리의 하위 디렉터리를 참조하십시오.

GetDirectories

GetDirectories

디렉터리의 전체 하위 디렉터리에 있는 모든 파일을 참조하십시오.

GetFileSystemInfos

디렉터리의 크기를 찾습니다.

Directory

파일이 있는지 여부를 확인합니다.

Exists

디렉터리의 파일을 크기순으로 정렬합니다.

GetFileSystemInfos

디렉터리가 있는지 여부를 확인합니다.

Exists

다음 코드 예제에서는 지정된 디렉터리가 있는지 여부를 확인한 다음 있으면 삭제하고 없으면 디렉터리를 만듭니다. 그런 다음 디렉터리를 이동하고 디렉터리에 파일을 만들고 디렉터리에서 파일을 셉니다.

using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        // Specify the directories you want to manipulate.
        string path = @"c:\MyDir";
        string target = @"c:\TestDir";

        try 
        {
            // Determine whether the directory exists.
            if (!Directory.Exists(path)) 
            {
                // Create the directory it does not exist.
                Directory.CreateDirectory(path);
            }

            if (Directory.Exists(target)) 
            {
                // Delete the target to ensure it is not there.
                Directory.Delete(target, true);
            }

            // Move the directory.
            Directory.Move(path, target);

            // Create a file in the directory.
            File.CreateText(target + @"\myfile.txt");

            // Count the files in the target directory.
            Console.WriteLine("The number of files in {0} is {1}",
                target, Directory.GetFiles(target).Length);
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        } 
        finally {}
    }
}

import System.*;
import System.IO.*;

class Test
{
    public static void main(String[] args)
    {
        // Specify the directories you want to manipulate.
        String path = "c:\\MyDir";
        String target = "c:\\TestDir";

        try {
            // Determine whether the directory exists.
            if (!(Directory.Exists(path))) {
                // Create the directory it does not exist.
                Directory.CreateDirectory(path);
            }

            if (Directory.Exists(target)) {
                // Delete the target to ensure it is not there.
                Directory.Delete(target, true);
            }

            // Move the directory.
            Directory.Move(path, target);

            // Create a file in the directory.
            File.CreateText(target + "\\myfile.txt");

            // Count the files in the target directory.
            Console.WriteLine("The number of files in {0} is {1}", target,
                (Int32)Directory.GetFiles(target).length);
        }
        catch (System.Exception e) {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {
        }
    } //main
} //Test

다음 코드 예제에서는 디렉터리의 크기를 계산하는 방법을 보여 줍니다.

// The following example calculates the size of a directory
// and its subdirectories, if any, and displays the total size
// in bytes.

using System;
using System.IO;

public class ShowDirSize 
{
    public static long DirSize(DirectoryInfo d) 
    {    
        long Size = 0;    
        // Add file sizes.
        FileInfo[] fis = d.GetFiles();
        foreach (FileInfo fi in fis) 
        {      
            Size += fi.Length;    
        }
        // Add subdirectory sizes.
        DirectoryInfo[] dis = d.GetDirectories();
        foreach (DirectoryInfo di in dis) 
        {
            Size += DirSize(di);   
        }
        return(Size);  
    }
    public static void Main(string[] args) 
    {
        if (args.Length != 1) 
        {
            Console.WriteLine("You must provide a directory argument at the command line.");    
        } 
        else 
        {  
            DirectoryInfo d = new DirectoryInfo(args[0]);
            Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, DirSize(d));
        }
    }
}

System.Object
  System.IO.Directory

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft