指定したファイルがあるかどうかを調べるにはCreateFileを使ってファイルにアクセスできるかどうかを調べる方法と、今回使っているFindFirstFileで検索できるかどうかを使う方法がある。
FindFirstFileの場合は少し改良すればフォルダの存在確認にも使えるので便利だ。
// // ファイルの存在を確認する // bool IsFileExist(LPCTSTR pszFile) { HANDLE hFind; WIN32_FIND_DATA FindFileData; hFind = ::FindFirstFile(pszFile,&FindFileData); if(hFind == INVALID_HANDLE_VALUE) return false; ::FindClose(hFind); if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) return false; //同名のフォルダがある(ファイルではない) return true; } void Test(void) { bool ret; ret = IsFileExist(_T("c:\\IO.SYS")); if(ret) ::MessageBox(NULL,_T("ファイルは存在します"),_T(""),MB_OK); else ::MessageBox(NULL,_T("ファイルは存在しません"),_T(""),MB_OK); }