유용한 정보

[C++]파일 및 디렉토리 존재 여부 체크

DevReff 2024. 12. 25. 12:44




728x90
반응형

 

 

// 파일의 존재여부 확인
// 파라미터
//nFlag = 1 (=default)이면 파일, 2이면 디렉토리인지, 0이면 파일 및 디렉토리를 검색

BOOL isExists(const char* fname, int nFlag)

{
if(fname == NULL)
return FALSE;

DWORD attr = GetFileAttributes(fname);
#ifdef _DEBUG_LOG
//CString str;
//str.Format("%s = 0x%x (file?%d, dir?%d)", fname, attr,((attr & FILE_ATTRIBUTE_DIRECTORY) == 0), ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0));
//MessageBox(NULL, str, "OK", MB_OK);
#endif

switch(nFlag)
{
case 0:
return (attr != 0xFFFFFFFFL);
break;
case 1:// 파일인지의 여부
if(attr != 0xFFFFFFFFL)
return ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0);
break;
case 2:// 디렉토리인지의 여부
if(attr != 0xFFFFFFFFL)
return ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0);
break;
}

return FALSE;
}

 

전 과목 스타 선생님+영수 심화+영재교육원까지! 초등 인강 '엘리하이'

 

int isFileExists(char* s)

{
_finddatai64_t c_file;
intptr_t hFile;
int result = 0;


if ( (hFile = _findfirsti64(s, &c_file)) == -1L )
result = 0; // 파일 없으면 거짓 반환
else
if (c_file.attrib & _A_SUBDIR) result = 0; // 있어도 디렉토리면 거짓
else
result = 1; // 그밖의 경우는 "존재하는 파일"이기에 참


_findclose(hFile);

return result;
}

int isDirExists(char* s)

{
_finddatai64_t c_file;
intptr_t hFile;
int result = 0;

hFile = _findfirsti64(s, &c_file);
if (c_file.attrib & _A_SUBDIR ) result = 1;
_findclose(hFile);

return result;
}

출처: https://use1348.tistory.com/11 [유용한 정보:티스토리]