判断目录是否存在

判断目录是否存在

使用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);


可以使用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:\\")))
{
    //存在
}

也可以使用GetFileAttributes函数,返回 FILE_ATTRIBUTE_DIRECTORY 表示目录存在
if (FILE_ATTRIBUTE_DIRECTORY == GetFileAttributes(_T("c:\\")))
{
    //存在
}

PathFileExists函数也可以,这个好,不用写注释
#include <shlwapi.h>//头文件
if (PathFileExists(_T("c:\\")))
{
    //存在
}



posted on 2007-05-23 10:46  yoyolion  阅读(2884)  评论(0编辑  收藏  举报