判斷文件夾是否存在,及創建一個文件夾

判斷指定位置是否存在已知名字的文件夾,若不存在,新建一個。VC 6.0下通過。

#include<iostream>
#include<windows.h>
#include <string.h>

using namespace std;

//判斷一個文件夾是否存在,如果不存在則創建這個文件夾
bool DirExist(const TCHAR  *pszDirName)   
{   
    WIN32_FIND_DATA   fileinfo;   
    TCHAR   _szDir[_MAX_PATH];   
    strcpy(_szDir,pszDirName);   
    int nLen  =  strlen(_szDir);   
    if((_szDir[nLen-1] == '//') || (_szDir[nLen-1] == '/'))   
    {   
        _szDir[nLen-1] =(char) '/0';//zx
    }   
    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;   
    strcpy(_szDir,pszDirName);
    nLen   =   strlen(_szDir);   
    if(_szDir[nLen-1] == '//' || _szDir[nLen-1] == '/')   
    {   
        _szDir[nLen-1] = (char)'/0';   //zx
    }   
    nLen = strlen(_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;   
            strcat(_szTmp,_str);   
        }   
        else   
        {   
            bRet = ::CreateDirectory(_szTmp,NULL);   
            if(bRet)   
            {   
                ::SetFileAttributes(_szTmp,FILE_ATTRIBUTE_NORMAL);   
            }   
            _str[0] = _szDir[idx];   
            _str[1] = 0;   
            strcat(_szTmp,_str);   
        }   
        if(idx == nLen-1)   
        {   
            bRet = ::CreateDirectory(_szTmp,NULL);   
            if(bRet)   
            {   
                ::SetFileAttributes(_szTmp,FILE_ATTRIBUTE_NORMAL);   
            }   
        }   
    }   
    if(DirExist(_szTmp))   
        return   true;   
    return   false; 
} 


int main()
{ 
char Dir[]="F:\\123"; 

if(false==DirExist("Dir"))//查看F盤下是否存在名爲123的文件夾
{
 cout<<"not  find!"<<endl;
 if(true==CreateDir(Dir))//創建123文件夾
	 cout<<"Create success!"<<endl;
 else 
	 cout<<"create failed!"<<endl;
}

else
	cout<<"Find it !"<<endl;
system("pause");
return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章