본문 바로가기
Borland

특정 파일이 있는 폴더 이름을 검색하는 함수

by leo21c 2010. 12. 27.

bool __fastcall SearchSomeFile(String path, String FileName, String &tPath)
{
  AnsiString dir, fn, subPath;
  HANDLE hSrch;
  WIN32_FIND_DATA wfd;
  bool bResult = true;

  int length = path.Length();
  if (path[length-1] != '\\') path += "\\";
  dir = path + "*.*";
  hSrch = FindFirstFile(dir.c_str(), &wfd);
  while(bResult) {
    if ((wfd.cFileName[0]!=_T('.') || lstrlen(wfd.cFileName)>2) &&
    wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {//directory
      subPath = wfd.cFileName;
      subPath = path + subPath;
      if (SearchDxfFile(subPath, FileName, tPath)) {
        FindClose(hSrch);
        return true;;
      }
    }
    else { // file
      fn = wfd.cFileName;
      if (fn == FileName) {
        tPath = path;
        FindClose(hSrch);
        return true;
      }
    }
    bResult = FindNextFile(hSrch, &wfd);
  }
  FindClose(hSrch);
  return false;
}

특정 폴더 내부에 있는 파일을 검색하는 함수이다.

내부 폴더가 있더라도 그 폴더까지 검사하도록 했다.

tPath에 파일이 있는 위치(폴더명)가 들어간다.