[C# 문법] C# Directory 에서 SubDirectory(하위 디렉토리) 찾기

안녕하세요. 오늘은 C# 문법에서 Directory 다루는 방법에 대해서 알려 드리려고 합니다. 그 중에서도 해당 정해진 경로가 있으면 그 경로 안에 SubDirectory 들이 있는지에 대한 유무를 찾는 방법에 대해서 알려 드리려고 합니다. 해당 메서드는 제가 구현한 것이 아니라, StackOverFlow 에 있는 것을 가져다가 응용한 것이니까 여러분들도 해당 구문 참고하시면 좋겠습니다.

예제 코드

using System;
using System.Collections.Generic;
using System.IO;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>();
            DirectoryInfo path = new DirectoryInfo(@"C:\Users\Desktop\Demo");
            DirectoryInfo[] dir = path.GetDirectories();

            for(int idx = 0; idx < dir.Length; idx++)
            {
                FindDirectoriesWithFiles(list, dir[idx]);
            }

            foreach (var item in list)
            {
                Console.WriteLine($"Directory 아이템 목록 : {item}");
            }
        }

        public static void FindDirectoriesWithFiles(List<string> paths, DirectoryInfo workingDir)
        {
            if (workingDir.GetFiles().Length > 0)
            {
                paths.Add(workingDir.FullName);
            }
            else
            {
                foreach (var childDir in workingDir.GetDirectories())
                {
                    FindDirectoriesWithFiles(paths, childDir);
                }
            }
        }
    }
}

실행 결과

Directory 아이템 목록 : C:\Users\Desktop\Demo\2020\09
Directory 아이템 목록 : C:\Users\Desktop\Demo\2020\10
Directory 아이템 목록 : C:\Users\Desktop\Demo\2020\11
Directory 아이템 목록 : C:\Users\Desktop\Demo\2020\12
Directory 아이템 목록 : C:\Users\Desktop\Demo\2021\01
Directory 아이템 목록 : C:\Users\Desktop\Demo\2021\02
Directory 아이템 목록 : C:\Users\Desktop\Demo\2021\03
Directory 아이템 목록 : C:\Users\Desktop\Demo\2021\04
Directory 아이템 목록 : C:\Users\Desktop\Demo\2021\05
  • 참고로, 위의 소스코드에서는 Directory 안에 파일들이 있는 경우의 Directory 정보들을 가져오도록 하였습니다.
  • 만약, 파일 유무와 상관없이 모든 Directory 정보를 가져오고 싶다면 if (workingDir.GetFiles().Length > 0) 이 조건을 없애시면 됩니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY