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

C#에서 파일과 폴더를 찾는 방법 – Directory.GetDirectories 완벽 가이드

C#에서 특정 경로 아래에 있는 하위 폴더나 파일을 검색해야 하는 경우가 자주 있습니다. 이럴 때 System.IO 네임스페이스Directory.GetDirectories 메서드를 사용하면 손쉽게 원하는 디렉터리 목록을 가져올 수 있습니다.

Directory.GetDirectories란?

Directory.GetDirectories는 지정한 경로에 존재하는 하위 폴더(디렉터리) 이름들의 배열을 반환하는 메서드입니다. 검색 패턴과 검색 옵션을 함께 지정하면, 원하는 조건에 맞는 폴더만 필터링하거나 모든 하위 폴더까지 재귀적으로 탐색할 수도 있습니다.

기본 사용 예제

아래 예제는 d:/New/Myfile 경로에서 이름이 'xml'인 폴더를 모든 하위 디렉터리까지 포함하여 검색하는 코드입니다.

string path = @"d:/New/Myfile";
string[] myDir = Directory.GetDirectories(path, "xml", SearchOption.AllDirectories);
Console.WriteLine(myDir.Length.ToString());
foreach (string res in myDir)
    Console.WriteLine(res);

코드 설명

1. 검색할 경로 지정 – 변수 path에 탐색을 시작할 기준 폴더 경로를 저장합니다. 문자열 앞의 @ 기호는 이스케이프 시퀀스를 무시하는 축자적 문자열 리터럴로, Windows 경로를 다룰 때 유용합니다.

2. 폴더 검색 실행Directory.GetDirectories(path, "xml", SearchOption.AllDirectories) 호출 시 세 가지 인수가 사용됩니다.

  • path: 검색을 시작할 루트 경로
  • "xml": 검색 패턴(searchPattern)으로, 'xml'이라는 이름의 폴더만 찾습니다. 와일드카드(*, ?)도 사용 가능합니다.
  • SearchOption.AllDirectories: 현재 폴더뿐 아니라 모든 하위 폴더까지 재귀적으로 탐색합니다. 최상위 폴더만 검색하려면 SearchOption.TopDirectoryOnly를 사용하세요.

3. 결과 출력 – 검색된 폴더 개수를 myDir.Length로 확인하고, foreach 반복문을 통해 각 폴더의 전체 경로를 콘솔에 출력합니다.

파일 검색이 필요하다면?

폴더가 아닌 파일을 찾으려면 같은 방식으로 Directory.GetFiles 메서드를 사용하면 됩니다. 사용법과 매개변수 구조가 GetDirectories와 거의 동일하기 때문에 쉽게 응용할 수 있습니다.

string[] files = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories);
foreach (string file in files)
    Console.WriteLine(file);

주의 사항

SearchOption.AllDirectories로 전체 하위 폴더를 탐색할 때, 접근 권한이 없는 폴더가 있으면 UnauthorizedAccessException이 발생할 수 있습니다. 대량의 폴더를 탐색하는 경우에는 예외 처리를 추가하거나 .NET Core/.NET 5 이상에서 제공하는 EnumerationOptions를 활용해 오류를 건너뛰는 옵션(IgnoreInaccessible = true)을 설정하는 것이 좋습니다.

마무리

C#의 Directory.GetDirectoriesDirectory.GetFiles 메서드를 활용하면 복잡한 디렉터리 구조에서도 원하는 폴더와 파일을 빠르고 간단하게 찾을 수 있습니다. 검색 패턴과 SearchOption 옵션을 적절히 조합하여 프로젝트에 맞는 파일 탐색 기능을 구현해 보세요.