본문 바로가기

C언어

C언어에서 특정 디렉토리안의 파일명들을 얻기. C/C++/MFC

#include <windows.h>
#include <direct.h>
void FileList(char *path);
void main()
{
char Path[MAX_PATH];
_getcwd(Path, MAX_PATH);
strcat(Path,"\\*.*");                 // 만약 wav파일만 찾고 싶다면 *.wav 하면된다 그런데 하위 폴더는 찾기가 안될것이다.
FileList(Path);
}
void FileList(char *path)
{
BOOL    bResult = TRUE;
HANDLE    hSrch;
WIN32_FIND_DATA  wfd;
char     drive[_MAX_DRIVE];
char     dir[MAX_PATH];
char     newpath[MAX_PATH];
// path에 해당하는 디렉토리를 포인터를 읽어온다.
hSrch=FindFirstFile(path,&wfd);
// 잘못읽어올경우 함수를 빠져 나간다.
if (hSrch == INVALID_HANDLE_VALUE)
return;
// 드라이브를 읽어온다. ( 어찌보면 필요없는 부분이다 )
_splitpath(path,drive,dir,NULL,NULL);
while( bResult ) {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (strcmp(wfd.cFileName,".") && strcmp(wfd.cFileName,".."))
{
FileList(newpath); // 재귀함수 호출로 하위 디렉토리까지 처리할수 있다.
}
}
wfd.cFileName;    // 이변수에 파일 이름이 씌여진다.( 여기 변수에 파일명을 얻어오니 원하는 처리를 하면 된다 )
bResult=FindNextFile(hSrch,&wfd);
}
FindClose(hSrch);
}

출처  : 
http://blog.naver.com/ppusarida/40086376260
 에서 퍼옴