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

C#에서 특정 경로의 모든 파일과 폴더를 삭제하는 방법

C#에서 지정된 경로의 모든 하위 폴더와 파일을 한 번에 삭제해야 하는 경우가 종종 있습니다. 이럴 때 System.IO 네임스페이스를 활용하면 손쉽게 처리할 수 있습니다.

특히 DirectoryInfo 클래스는 디렉터리 내의 모든 하위 폴더와 파일 정보를 제공하므로, 반복문과 함께 사용하면 전체 삭제 작업을 간단하게 구현할 수 있습니다.

예제 시나리오

먼저 D 드라이브에 Demo라는 디렉터리가 있고, 그 안에 두 개의 하위 폴더와 각각의 파일들이 존재한다고 가정해 보겠습니다.

using System.IO;
namespace DemoApplication {
    class Program {
        static void Main(string[] args) {
            DirectoryInfo di = new DirectoryInfo(@"D:\Demo");
            foreach (DirectoryInfo dir in di.GetDirectories()) {
                foreach (FileInfo file in dir.GetFiles()) {
                    file.Delete();
                }
                dir.Delete(true);
            }
        }
    }
}

코드 설명

위 코드의 동작 방식은 다음과 같습니다.

1. DirectoryInfo 객체 생성

new DirectoryInfo(@"D:\Demo")를 통해 대상 디렉터리를 나타내는 객체를 생성합니다. 문자열 앞의 @ 기호는 이스케이프 시퀀스를 무시하도록 하여 경로 표현이 간편해집니다.

2. GetDirectories()로 하위 폴더 탐색

GetDirectories() 메서드는 루트 디렉터리(Demo) 아래에 있는 모든 하위 폴더 목록을 반환합니다.

3. GetFiles()로 파일 삭제

각 하위 폴더 안에서 GetFiles() 메서드가 해당 폴더에 포함된 모든 파일(예: Demo File 1, Demo File 2)을 가져오고, file.Delete()로 하나씩 삭제합니다.

4. dir.Delete(true)로 폴더 삭제

파일이 모두 제거된 후 dir.Delete(true)를 호출하여 해당 폴더 자체를 삭제합니다. 매개변수 true는 재귀 삭제 옵션으로, 폴더 내부에 남아 있는 내용까지 함께 제거하도록 지정합니다.

실행 결과

위 코드를 실행하면 Demo 디렉터리 안의 모든 폴더와 관련 파일들이 완전히 삭제됩니다. 실행 후 디렉터리를 확인해 보면 하위 폴더와 파일이 더 이상 존재하지 않는 것을 확인할 수 있습니다.

주의 사항

이 방식은 루트 디렉터리(Demo) 자체는 유지하고 내부 내용만 삭제합니다. 만약 루트 디렉터리까지 통째로 삭제하고 싶다면, di.Delete(true)를 호출하면 됩니다. 또한 삭제 작업은 되돌릴 수 없으므로, 중요한 데이터가 포함된 경로에 실수로 적용되지 않도록 주의해야 합니다.