在vc下判断一个文件夹是否存在,如果不存在则
创建这个文件夹,代码如下:
- bool DirExist(const TCHAR *pszDirName)
- {
- WIN32_FIND_DATA fileinfo;
- TCHAR _szDir[_MAX_PATH];
- _tcscpy(_szDir,pszDirName);
- int nLen = _tcsclen(_szDir);
- if((_szDir[nLen-1] == '//') || (_szDir[nLen-1] == '/'))
- {
- _szDir[nLen-1] = '/0';
- }
- HANDLE hFind = ::FindFirstFile(_szDir,&fileinfo);
- if(hFind == INVALID_HANDLE_VALUE)
- {
- return false;
- }
- if(fileinfo.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
- {
- ::FindClose(hFind);
- return true;
- }
- ::FindClose(hFind);
- return false;
- }
- bool CreateDir(const TCHAR *pszDirName)
- {
- bool bRet = false;
- TCHAR _szDir[_MAX_PATH];
- TCHAR _szTmp[_MAX_DIR];
- int nLen = 0;
- int idx;
- if((DirExist(pszDirName)) == true)
- return true;
- _tcscpy(_szDir,pszDirName);
- nLen = _tcslen(_szDir);
- if(_szDir[nLen-1] == '//' || _szDir[nLen-1] == '/')
- {
- _szDir[nLen-1] = '/0';
- }
- nLen = _tcslen(_szDir);
- memset(_szTmp,0,_MAX_DIR);
- TCHAR _str[2];
- for(idx = 0;idx < nLen;idx++)
- {
- if(_szDir[idx] != '//')
- {
- _str[0] = _szDir[idx];
- _str[1] = 0;
- _tcscat(_szTmp,_str);
- }
- else
- {
- bRet = ::CreateDirectory(_szTmp,NULL);
- if(bRet)
- {
- ::SetFileAttributes(_szTmp,FILE_ATTRIBUTE_NORMAL);
- }
- _str[0] = _szDir[idx];
- _str[1] = 0;
- _tcscat(_szTmp,_str);
- }
- if(idx == nLen-1)
- {
- bRet = ::CreateDirectory(_szTmp,NULL);
- if(bRet)
- {
- ::SetFileAttributes(_szTmp,FILE_ATTRIBUTE_NORMAL);
- }
- }
- }
- if(DirExist(_szTmp))
- return true;
- return false;
- }