기본카테고리

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

DevAdd 2011. 4. 19. 15:54




// 파일의 존재여부 확인
// 파라미터
//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;
}

'기본카테고리' 카테고리의 다른 글

[MFC] Dialog 기반 ActiveX 만들기  (0) 2011.10.15
[C++]pragma pack 에 대해서...  (0) 2011.04.27
[C++]CListCtrl 제어  (0) 2011.04.19
[Windows]소켓에러 목록  (0) 2011.03.22
[C++]Popup Menu 만들기  (0) 2011.02.24