폴더의 파일 목록얻기

반응형

http://www.gungume.com/37

CFileFind 클래스는 매개변수로 넘겨준 경로의 파일 및 폴더 등의 목록을 얻고 각각의 기본적인 정보를 얻어올 수 있는 클래스이다.

일단 CFileFind 클래스의 객체랑 결과값을 받을 변수를 선언한다.
CFileFind m_fileFinder;
BOOL bWorking;

파일과 폴더의 목록을 얻어올 때 매개변수로 넘겨준 경로부터 시작해서 FindNextFile() 멤버함수를 이용해서 계속 다음 파일로 접근하는 방식으로 코딩을 하면 되는데 보통 while()을 이용해서 무한루프를 사용한다.
이때 탈출조건이 필요하므로 BOOL형 변수가 필요하다.(자세한 것은 아래 소스를 통해서...)

가장 기본적인 사용법은 아래와 같다.
bWorking = m_fileFinder.FindFile("경로");
while (bWorking)
{
    bWorking = m_fileFinder.FindNextFile();
    // 얻어온 파일에 대해서 처리...
}
m_fileFinder.Close();

위의 소스를 설명하면 일단 매개변수로 경로가 들어간다...
예를 들면 "C:\\*.*" 이런식이다...
일단 경로를 표시하기 위해서 '\'가 아닌 '\\'임을 주의해야 되고, 와일드카드를 사용할 수 있으므로 보통 해당 경로내의 모든 목록을 얻고 싶으면 예제와 같이 원하는 경로 끝에 '*.*'를 써주면 된다...
당연히 특정 확장자만 얻고 싶으면 '*.bmp' 이런식으로 경로를 지정해주면 된다....

위의 예처럼 경로를 "C:\\*.*" 이렇게 설정해주면 'C:\' 의 모든 파일과 폴더 목록을 얻어온다....
이때 주의점은 기본 기능만으로는 일단 해당 경로만 접근이 되고 하위경로는 들어가지 않는다는 점(하위경로를 들어가려면 재귀함수 등 필요...)과 파일과 폴더를 따로 구분해서 불러오지는 않는다...(그냥 이름순으로 얻어온다...)

어쨌든 위와 같이 쓰면 FindNextFile() 멤버함수에 의해 지정된 경로의 모든 파일과 폴더의 정보를 얻어올 수 있다...
정보를 얻어오면 CFileFind 객체인 m_fileFinder을 이용해서 원하는 작업을 바로 바로 처리해 줄수 있다...
파일명, 액세스 타임 얻기 등의 작업이 가능한데....CRecordSet 클래스를 이용해서 DB를 처리하는것과 비슷하다...

모든 작업이 끝나고 해당 경로의 마지막 파일까지 접근했다면 FindNextFile() 멤버함수의 리턴값에 의해 while() 반복문을 종료한다...

이 클래스로 처리할 수 있는 대략적인 정보는 해당 파일이나 폴더의 이름, 전체경로, 크기, 최근 수정일 등의 기본적인 정보를 얻을 수 있다.

또한 현재 얻어온 정보가 폴더인지, 시스템파일인지, 읽기전용, 숨김파일 등등의 속성을 알수도 있다....

이런 정보를 얻어올 수 있는 멤버함수를 적절히 사용해서 얻어온 파일 목록에 대한 처리가 가능하다.

'유용한 것들_func' 카테고리의 다른 글

메모리 정보 가져오기  (0) 2010.06.01
이미지 정보 (dx)  (0) 2010.05.12
마우스 커서 모양 LoadCursor  (0) 2009.12.15
MultiByteToWideChar  (0) 2009.11.12
CString <-> int , CString <-> double 변환  (0) 2009.09.04
TAGS.

Comments