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;
}