[C#] 하위 폴더 내부의 파일 목록 얻는 함수

특정 폴더에 대해서 그 하위 폴더까지 확장자가 .shp 인 파일 목록을 얻어는 함수입니다. 확장자의 지정은 함수 내부에 마법의 상수값으로 박혀 있습니다.

private void GetShpFileNames(string folderName, ArrayList fileNamesList)
{
    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(folderName);
    foreach (System.IO.FileInfo f in di.GetFiles())
    {
        if (f.Extension.ToLower().CompareTo(".shp") == 0)
        {
            String strInFileName = di.FullName + "\\" + f.Name;
            fileNamesList.Add(strInFileName);
        }
    }

    foreach (System.IO.DirectoryInfo sd in di.GetDirectories())
    {
        GetShpFileNames(sd.FullName, fileNamesList);
    }
}

최근에 C# 5.0에 대한 책을 3일에 걸쳐 대충 설렁 설렁 봤더랬습니다. 비록 위의 코드는 C#의 고전 문법만 존재하지만.. 여하튼, 클라이언트 단의 개발 언어로써 C#은 정말 단연 최고가 아닌가 할 정도였습니다. 자바스크립트의 비슷한 개념도 가져오고, 특히나 클래스 타입 자체를 동적으로 생성하는 기능에서는 ‘미친거아냐?’라는 생각마저 들었습니다. 마치 프로그램이 프로그램을 만들 수 있다라는 개념도 가능하다는 것이죠. 이런 미친…. -_-;

[C#] 지정된 폴더(Folder)에서 파일명(File Name) 목록(List) 얻기

C#에서 지정된 폴더에 담긴 파일명의 목록을 얻는 코드입니다.

String FolderName = tbFolder.Text;
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(FolderName);
foreach (System.IO.FileInfo File in di.GetFiles())
{
    if (File.Extension.ToLower().CompareTo(".xrv") == 0)
    {
        String FileNameOnly = File.Name.Substring(0, File.Name.Length - 4);
        String FullFileName = File.FullName;

        MessageBox.Show(FullFileName + " " + FileNameOnly);
    }
}

1번 코드에서 파일명 목록을 얻고자 하는 폴더명이 지정됩니다. 그리고 5번에서 확장자가 .xrv 인 파일만을 필터링합니다. 그리고 7번은 오직 파일명(경로와 확장자를 제외)만을 얻습니다. 끝으로 8번은 파일명의 전체 이름(경로와 확장자를 포함)을 얻습니다.

폴더 안의 서브 폴더를 처리하기 위해서는 DirectoryInfo의 GetDirectories 매서드를 사용하여 서브 폴더명의 리스트를 얻어와 처리하면 됩니다.