C# DirectoryInfo 클래스를 활용한 디렉토리 다루기

소개

C# DirectoryInfo 클래스는 폴더 또는 디렉토리 작업하는 기능을 제공합니다. 이 글에서는 DirectoryInfo 클래스와 C# 코드 예제와 함께 해당 클래스의 사용법을 설명하겠습니다.
DirectoryInfo 클래스는 System.IO 네임스페이스에 선언되어 있습니다. DirectoryInfo 클래스는 디렉토리의 생성, 복사, 삭제 , 이동 등의 작업을 할 수 있습니다.

C# DirectoryInfo 클래스

DirectoryInfo 클래스는 거의 모든 속성이 FileInfo 클래스와 동일하지만 파일이 아닌 디렉토리에서 작동한다는 점을 제외하고는 동일합니다. DirectoryInfo 클래스에는 정적 메서드가 없으며 인스턴스화된 개체에서만 사용할 수 있습니다. DirectoryInfo 객체는 디스크의 물리적 디렉토리를 나타냅니다. 또한 폴더를 삭제하고 새 디렉토리 및 하위 디렉토리를 만들기 위한 인스턴스 메서드를 제공합니다.

C# DirectoryInfo 클래스를 사용하는 시점

C# 에서 디렉토리를 관리 할 수 있는 대표 클래스는 Directy 와 DirectoryInfo 클래스가 있습니다. Directory 클래스는 static 선언이 있는 반면 DirectoryInfo 클래스는 Static 선언이 존재하지 않습니다. 객체를 여러 번 재사용할 예정이라면 Directory 클래스의 해당 정적 메서드 대신 DirectoryInfo의 인스턴스 메서드를 사용하는 것이 좋습니다.

DirectoryInfo 클래스의 가장 유용한 메서드 중 일부는 다음과 같습니다:

1. Create

이 메서드는 새 디렉토리를 만드는 데 사용됩니다.

2. CreateSubdirectory

이 메서드는 지정된 경로에 하위 디렉토리 또는 하위 디렉토리를 만드는 데 사용됩니다.

3. MoveTo

MoveTo 메서드는 DirectoryInfo 인스턴스와 해당 내용을 새 경로로 이동합니다.

4. Delete

Delete 메서드는 디렉토리를 삭제하며 하위 디렉토리 및 파일을 삭제할지 여부를 지정합니다.

5. GetDirectories

이 메서드는 주어진 디렉토리 경로의 하위 디렉토리를 가져오는 데 사용됩니다.

6. GetFiles

GetFiles 메서드는 지정된 폴더의 파일을 가져오는 데 사용됩니다.

이제 DirectoryInfo 클래스의 일부 메서드를 살펴보겠습니다.

C#에서 새 디렉토리 만들기

Create 메서드는 새 디렉토리를 만드는 데 사용됩니다.

static void Main(string[] args)  
{  
    String path = @"D:\MyTestDirectory";  
    DirectoryInfo fl = new DirectoryInfo(path);  
    fl.Create();  
    {  
        Console.WriteLine("디렉토리가 생성되었습니다.");  
    }  
}

C#에서 하위 디렉토리 만들기

CreateSubdirectory 메서드는 지정된 경로에 하위 디렉토리 또는 하위 디렉토리를 만드는 데 사용됩니다.

static void Main(string[] args)  
{  
    String path = @"D:\MyTestDirectory";  
    DirectoryInfo fl = new DirectoryInfo(path);  
    DirectoryInfo dis = fl.CreateSubdirectory("SubDir");  
    {  
        Console.WriteLine("디렉토리가 생성되었습니다.");  
    }  
}

C#에서 디렉토리 이동하기

MoveTo 메서드는 디렉토리와 해당 내용을 새 경로로 이동합니다.

static void Main(string[] args)  
{  
    String path = @"D:\MyTestDirectory";  
    string path1 = @"D:\MyTestDirectory2";  
    DirectoryInfo f1 = new DirectoryInfo(path);  
    DirectoryInfo f2 = new DirectoryInfo(path1);  
    f1.MoveTo(path1);  
    {  
        Console.WriteLine("디렉토리가 이동되었습니다.");  
    }  
}

C#에서 디렉토리 삭제하기

Delete 메서드는 디렉토리를 삭제하며 하위 디렉토리와 파일을 삭제할지 여부를 지정합니다.

static void Main(string[] args) {  
    string path = @ "D:\MyTestDirectory";  
    DirectoryInfo f1 = new DirectoryInfo(path);  
    f1.Delete(); {  
        Console.WriteLine("디렉토리가 삭제되었습니다.");  
    }  
}

C#에서 디렉토리의 하위 디렉토리 가져오기

GetDirectories 메서드는 주어진 디렉토리 경로의 하위 디렉토리를 가져오거나 현재 디렉토리의 하위 디렉토리를 반환하는 데 사용됩니다.

static void Main(string[] args) {  
    try {  
        DirectoryInfo di = new DirectoryInfo(@ "D:\MyTestDirectory");  
        DirectoryInfo[] dir1 = di.GetDirectories();   
        Console.WriteLine("포함된 디렉토리 수는 {0}입니다.", dir1.Length);  
    }  
    catch (Exception e) {  
        Console.WriteLine("작업이 실패했습니다: {0}", e.ToString());  
    }  
}

C#에서 폴더의 모든 파일 가져오기

GetFiles 메서드는 지정된 폴더의 파일을 가져오는 데 사용됩니다. 다음 코드는 모든 디렉토리를 루프로 돌아가 하위 디렉토리를 가져오고 그들을 루프로 돌며 모든 파일을 얻는

방법을 보여줍니다.

static void Main(string[] args)      
{  
    DirectoryInfo di = new DirectoryInfo(@"D:\MyTestDirectory");  
    DirectoryInfo[] dirs = di.GetDirectories();  
    foreach (DirectoryInfo diNext in dirs)  
    {  
        Console.WriteLine("{0} 디렉토리의 파일 수는 {1}입니다.", diNext, diNext.GetFiles().Length);  
    }  
}

DirectoryInfo Properties

DirectoryInfo 클래스는 디렉토리에 대한 정보를 검색할 수 있도록 다음 속성을 제공합니다.

1. CreationTime

이 속성은 디렉토리의 생성 날짜와 시간을 반환합니다.

2. Exists

이 속성은 디렉토리가 존재하는지 여부를 불리언 결과로 반환합니다.

3. FullName

이 속성은 루트 디렉토리에서 파일의 전체 이름을 반환합니다.

4. Name

이 속성은 디렉토리의 이름을 반환합니다.

5. LastAccessTime

이 속성은 마지막 액세스 시간의 날짜와 시간을 반환합니다.

6. LastWriteTime

이 속성은 마지막 파일 저장 시간을 반환합니다.

7. Root

경로의 루트 부분을 가져옵니다.

DirectoryInfo 속성 예제입니다.

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

namespace directoryinfoproperty {  
    class Program {  
        static void Main(string[] args) {  
            DirectoryInfo fi = new DirectoryInfo(@ "D:\MyTestDirectory");  
            Console.WriteLine("디렉토리 이름은 {0}입니다.", fi.Name);  
            Console.WriteLine("디렉토리 생성 시간은 {0}입니다.", fi.CreationTime.ToLongTimeString());  
            Console.WriteLine("디렉토리 마지막 액세스 시간은 {0}입니다.", fi.LastAccessTime.ToLongDateString());  
            Console.WriteLine("디렉토리 존재 여부는: {0}", fi.Exists);  
            Console.WriteLine("디렉토리 마지막 수정 시간은 {0}입니다.", fi.LastWriteTime);  
            Console.WriteLine("디렉토리 루트는 {0}입니다.", fi.Root);  
        }  
    }  
}
C# DirectoryInfo 클래스를 활용한 디렉토리 다루기

결론

C# DirectoryInfo 클래스는 디렉토리 작업에 매우 유용합니다. 이 번글에서는 DirectoryInfo의 다양한 속성과 메서드를 사용하여 디렉토리를 처리하는 방법을 배웠습니다.

Leave a Comment