http://cafe.naver.com/javacircle.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=42875
CFindFile 클래스는
폴더및 하위폴더내의 특정 확장자를 가진 모든파일을의 목록을 만든다든지,,
그 외 작업을 할때에 자주 애용합니당.
//-------------------------------------------------------------
bool MyApp::FindFile( CString path, CString findname )
{
CFileFind finder;
bool working = finder.FindFile( path + "\\*.*" );
while ( working )
{
working = finder.FindNextFile();
if ( finder.IsDots() ) continue;
if ( finder.IsDirectory() )
{
/// 하위폴더를 뒤져본다.
if ( FindFile( finder.GetFilePath() , findname ) ) return true;
}
else
{
CString curfile = finder.GetFileName();
if ( curfine == findfile )
{
// 발견.
return true;
}
return false;
}
//-------------------------------------------------------------
그리고
FindFile( "C:\\", "test.txt" );
또는
FileFind( ".\\Data", "test.txt" );
이렇게 해주면 파일을 찾겠죵.. -.-
[출처] CFindFile을 이용해서 폴더를 검색|작성자 난뽀다
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//사용법
char szFile[MAX_PATH];
char szDir[MAX_PATH];
strcpy(szFile, "adb.exe");
strcpy(szDir, "c:\\temp");
SetCurrentDirectory(szDir);
if(SearchDirectory(szFile)) {
//파일 검색성공
}
/**
* 현재 폴더(하위폴더 포함) 파일을 검색한다.
*
* @param [in] 검색파일
* @param [in] 하위폴더
*
* @return 검색에 성공시 TRUE 반환
*/
BOOL SearchDirectory( const char* szFile, const char *szPath=_T(""))
{
CString szSearchPath = szPath;
char pFileName[MAX_PATH];
int nSearchPathLen;
BOOL bSearch = FALSE;
WIN32_FIND_DATA info;
// 현재 경로의 모든 파일과 디렉토리를 찾는다.
HANDLE searchHandle = FindFirstFile(szSearchPath + "*.*", &info);
if(INVALID_HANDLE_VALUE != searchHandle) {
do{
if(FILE_ATTRIBUTE_DIRECTORY & info.dwFileAttributes)
{
// 폴더의 경우
// 현재 폴더(.)와 이전폴더("..")는 검색에서 제외
if(info.cFileName[ 0 ] != '.')
{
// 하위 디렉토리를 계속 검색
bSearch = SearchDirectory(szFile, szSearchPath + info.cFileName + CString("\\"));
if(bSearch)
break;
}
}
else
{
nSearchPathLen = strlen( szSearchPath );
strcpy_s( pFileName, nSearchPathLen + 1, szSearchPath );
strcpy_s( pFileName + nSearchPathLen, strlen( info.cFileName ) + 1, info.cFileName );
TRACE("File> %s \n", pFileName);
//찾는 문자열인지 체크
if(strcmp(info.cFileName, szFile) == 0) {
bSearch = TRUE;
break;
}
}
} while(FindNextFile(searchHandle, &info));
FindClose(searchHandle);
}
return bSearch;
}