C#의 Directory 클래스는 디렉토리와 하위 디렉토리를 다루는 다양한 메서드를 제공합니다. 이 클래스를 활용하면 폴더 생성, 삭제, 열거 등 파일 시스템 관련 작업을 손쉽게 처리할 수 있습니다.
Directory 클래스의 주요 메서드
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | CreateDirectory(String) 지정된 경로에 모든 디렉토리와 하위 디렉토리를 생성합니다. 이미 존재하는 경우 새로 만들지 않습니다. |
| 2 | CreateDirectory(DirectorySecurity, String) 지정된 Windows 보안 설정을 적용하여 해당 경로의 모든 디렉토리를 생성합니다. 이미 존재하는 경우 생성하지 않습니다. |
| 3 | Delete(String) 지정된 경로에서 빈 디렉토리를 삭제합니다. |
| 4 | Delete(String, Boolean) 지정된 디렉토리를 삭제하며, 옵션에 따라 하위 디렉토리와 파일까지 함께 삭제할 수 있습니다. |
| 5 | EnumerateDirectories(String) 지정된 경로 내 디렉토리 이름들의 열거 가능한 컬렉션을 반환합니다. |
| 6 | EnumerateDirectories(String, String) 지정된 경로에서 검색 패턴과 일치하는 디렉토리 이름들의 열거 가능한 컬렉션을 반환합니다. |
디렉토리 이름 가져오기
디렉토리 이름 목록을 얻으려면 EnumerateDirectories 메서드를 사용합니다. 먼저 DirectoryInfo 클래스를 이용해 대상 폴더를 지정합니다.
DirectoryInfo info = new DirectoryInfo(@"D:/new");
폴더 크기 계산하기
폴더 내 모든 파일의 전체 크기를 구하려면 EnumerateFiles 메서드와 LINQ의 Sum을 조합하면 됩니다.
long totalSize = info.EnumerateFiles().Sum(file => file.Length);
하위 디렉토리 열거하기
하위 디렉토리 목록을 확인하려면 다음과 같이 EnumerateDirectories()를 호출합니다.
info.EnumerateDirectories()
이처럼 DirectoryInfo 객체의 EnumerateDirectories 메서드는 지연 평가(lazy evaluation) 방식으로 동작하기 때문에, 대용량 디렉토리를 탐색할 때도 효율적으로 처리할 수 있다는 장점이 있습니다.