C#] 하위 디렉토리 내용 검색하기
어떤 디렉토리가 있으면 그 디렉토리 내의 하위 디렉토리를 포함한
모든 파일 정보나 디렉토리 정보까지 검색하여 사용해야 하는 일이 있다.
흔히 파일 정보 검색은 Directory클래스나 DirectoryInfo 클래스에서 정의된
GetFiles나 GetDirectories를 등을 사용하는데
어떤 속성값도 없이 경로만 지정해준 상태에서 목록을 반환하게 하면,
선택한 경로 내의 하위 디렉토리에는 접근하지 않는 문제가 발생한다.
모든 하위 디렉토리의 파일 혹은 디렉토리 목록을 조회하는 것이 목적이면
메서드의 파라미터에 검색 옵션을 추가해주면 된다.
1 2 | Di = new DirectoryInfo(searchPath); FileInfo[] file = Di.GetFiles("*",SearchOption.AllDirectories); | cs |
상기 소스는 필자가 심심해서 만들고 있는
윈도우 응용 프로그램에 들어간 소스 중 하나다.
소스에 대해서 간략하게 설명하자면,
searchPath라는 경로의 정보를 담고 있는 string 변수이고,
Di는 DirectoryInfo 인스턴스다.
GetFiles의 결과물은 FileInfo[] 형태로 반환값이 생성된다.
여기서 눈여겨 보아야 하는 부분은 아무래도 GetFiles()과 파라미터를 볼 필요가 있다.
MSDN의 문서를 참고하면, 이 메서드에 대한 설명이 자세히 나와 있다.
Directory를 사용하는 경우,
Directory.GetFiles(string path, string searchPattern, SearchOption searchOption);
DirectoryInfo를 사용하는 경우
DirectoryInfo.GetFiles(string searchPattern, SearchOption searchOption);
참고로, 이 부분은 .NET Framework 2.0부터 추가되었다.
덧붙여 말하자면, searchPattern은 파일 이름과 일치 여부에 대한 옵션을 설정할 수 있어,
와일드카드 등을 이용해 특정 길이 혹은 모든 파일 목록를 반환하도록 할 수 있다.
'정리가 필요한 카테고리(추후 정리) > C#,Unity' 카테고리의 다른 글
C#] 접근 수정자(Acces Modifier) (0) | 2017.07.22 |
---|---|
C#] 리스트뷰 항목(아이템) 더블 클릭 시 항목 읽어오기 (0) | 2017.05.16 |
C#] 버튼 텍스트 바꾸기 (0) | 2017.03.20 |
C#] System.Net.Sockets 네임스페이스 (0) | 2017.02.19 |
C#] System.Net 네임스페이스 (0) | 2017.02.18 |