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

C#에서 디렉터리의 파일을 재귀적으로 나열하는 방법

C#에서 특정 디렉터리뿐만 아니라 그 하위 폴더까지 포함한 모든 파일 목록을 가져오려면 Directory.GetFiles() 메서드와 함께 SearchOption.AllDirectories 옵션을 사용하면 됩니다.

재귀적 파일 검색 방법

먼저 파일을 검색할 대상 디렉터리를 지정합니다. 세 번째 인자로 SearchOption.AllDirectories를 전달하면 하위 디렉터리까지 재귀적으로 탐색합니다.

string[] myFiles = Directory.GetFiles("D:\\New\\", "*.*", SearchOption.AllDirectories);
  • 첫 번째 인자: 탐색을 시작할 디렉터리 경로
  • 두 번째 인자: 검색 패턴 ("*.*"는 모든 파일을 의미)
  • 세 번째 인자: 검색 옵션 (AllDirectories는 하위 폴더 포함, TopDirectoryOnly는 현재 폴더만 검색)

전체 예제 코드

다음은 지정된 디렉터리와 그 하위 폴더에 있는 모든 파일을 출력하는 완전한 예제입니다.

using System;
using System.Linq;
using System.IO;
class Program {
    static void Main() {
        string[] myFiles = Directory.GetFiles("D:\\New\\", "*.*", SearchOption.AllDirectories);
        foreach (string res in myFiles) {
            Console.WriteLine(res);
        }
    }
}

실행 결과

위 코드를 실행하면 해당 폴더와 하위 폴더에 있는 모든 파일이 다음과 같이 출력됩니다.

D:\New\one.txt
D:\New\two.html
D:\New\nature.png

참고 사항

파일 개수가 매우 많거나 대용량 디렉터리를 다룰 때는 전체 목록을 배열로 한 번에 로드하는 GetFiles()보다, 파일을 하나씩 열거하는 Directory.EnumerateFiles()를 사용하는 것이 메모리 효율면에서 더 유리합니다. 또한 접근 권한이 없는 폴더가 존재할 경우 UnauthorizedAccessException이 발생할 수 있으므로, 필요하다면 try-catch 블록으로 예외 처리를 추가하는 것이 좋습니다.