判断目录是否存在的几种方法(转帖)(2008-12-20 15:10:34) 转载标签:杂谈分类:编程1、使用CFileFind 类无法判断根目录: 程序代码 CFileFind fileFind; CString m_path = _T("c:\\"); if (fileFind.FindFile(m_path) == false)//**如果是根目录(c:\,d:\),FindFile返回false;不是根目录则运行正常 { AfxMessageBox(msg); return; }
CFileFind 是对API ::FindFirstFile的封装,直接使用::FindFirstFile也存在无法判断根目录是否存在:
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(_T("c:\\"), &wfd); if (hFind != INVALID_HANDLE_VALUE) { // } FindClose(hFind);
2、可以使用IO.h的 _access函数来判断:
程序代码 #include <io.h>//头文件
#ifdef _UNICODE #define IsDirectoryExist(path) ::_waccess(path,0) == 0 //_waccess的第二个参数表示仅判断存在性,返回0表示存在,返回-1表示不存在 #else #define IsDirectoryExist(path) ::_access(path,0) == 0//_access是MBCS版本 #endif
使用代码: if(IsDirectoryExist(_T("c:\\"))) { //存在 }
3、也可以使用GetFileAttributes函数,返回 FILE_ATTRIBUTE_DIRECTORY 表示目录存在
程序代码 if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(_T("c:\\"))) { //存在 }
4、PathFileExists函数也可以:
程序代码 #include <shlwapi.h>//头文件 if (PathFileExists(_T("c:\\"))) { //存在 }
|