Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 폴더 크기 계산하기 – DirectoryInfo와 EnumerateFiles 활용법

C#에서 특정 폴더의 전체 크기를 계산하려면 Directory.EnumerateFiles 메서드를 사용해 파일 목록을 가져온 후, 각 파일의 크기를 합산하면 됩니다. 이 글에서는 기본적인 폴더 크기 계산 방법부터 하위 폴더까지 포함하는 재귀적 계산 방법까지 단계별로 살펴봅니다.

1. 폴더 크기 계산 기본 방법

먼저 DirectoryInfo 클래스를 사용해 크기를 계산할 대상 폴더를 지정합니다.

DirectoryInfo info = new DirectoryInfo(@"D:/new");

이어서 EnumerateFiles 메서드로 폴더 내 모든 파일을 열거하고, LINQ의 Sum 연산자를 활용해 파일 크기의 합계를 구합니다.

long totalSize = info.EnumerateFiles().Sum(file => file.Length);

위 코드는 지정한 폴더 바로 아래에 있는 파일들만 합산합니다. 결과값은 바이트(byte) 단위이므로, 필요에 따라 KB나 MB로 변환해 표시하면 더욱 가독성이 좋습니다.

2. 하위 폴더까지 포함한 크기 계산

하위 디렉터리를 탐색하려면 EnumerateDirectories 메서드를 사용합니다.

info.EnumerateDirectories()

하위 폴더의 파일까지 모두 포함해 전체 크기를 구하려면 검색 옵션을 지정하는 것이 가장 간단합니다.

long totalSize = info.EnumerateFiles("*", SearchOption.AllDirectories)
                     .Sum(file => file.Length);

SearchOption.AllDirectories 옵션을 사용하면 모든 하위 디렉터리를 재귀적으로 순회하며 파일 크기를 합산할 수 있습니다.

3. C# 디렉터리 관련 주요 메서드

폴더 크기 계산 외에도 C#에서는 Directory 클래스를 통해 다양한 디렉터리 작업을 수행할 수 있습니다. 자주 사용되는 주요 메서드는 다음과 같습니다.

메서드설명
CreateDirectory(String)지정된 경로에 모든 디렉터리와 하위 디렉터리를 생성합니다. 이미 존재하는 디렉터리는 그대로 유지됩니다.
CreateDirectory(String, DirectorySecurity)지정된 경로에 디렉터리가 없는 경우, 지정된 Windows 보안 설정을 적용하여 디렉터리를 생성합니다.
Delete(String)지정된 경로에서 빈 디렉터리를 삭제합니다.
Delete(String, Boolean)지정된 디렉터리를 삭제하며, 옵션 값이 true인 경우 해당 디렉터리의 하위 디렉터리와 파일까지 함께 삭제합니다.
EnumerateDirectories(String)지정된 경로에 있는 디렉터리 이름들의 열거 가능한 컬렉션을 반환합니다.

마무리

C#에서 폴더 크기를 계산하는 것은 DirectoryInfo와 LINQ만 있으면 몇 줄의 코드로 손쉽게 구현할 수 있습니다. 단일 폴더만 확인할지, 하위 폴더까지 모두 포함할지에 따라 적절한 열거 방식을 선택하면 되며, 대용량 폴더를 다룰 때는 GetFiles보다 지연 평가 방식인 EnumerateFiles를 사용하는 것이 성능 면에서 유리합니다.