创建指定的目录

                                                 创建指定的目录或者文件

  创建一个目录使用API函数 CreateDirectory ,但是只能创建一层的目录。

  创建一个文件使用API函数 CreateFile,但是也只能创建在已经存在的目录中。

 

  所有如果指定一个多层的文件路径,不管这个路径是目录还是文件,都需要自己去实现。

 

  下面是实现函数:

  //创建指定的路径 bool CLocalDiskMng::CreatePath(tstring strCurPath, DWORD dwStartPos) { if (strCurPath.empty()) { return false; } if (::PathFileExists(strCurPath.c_str())) { return true; } tstring strCreateDir; tstring::size_type slash_pos=strCurPath.find(_T("//"),dwStartPos); if (slash_pos!=tstring::npos) { //获得首层的目录 strCreateDir=strCurPath.substr(0,slash_pos); //如果首层目录不存在,那么创建 if (!PathFileExists(strCreateDir)) { bool bRet=CreateDirectory(strCreateDir.c_str(),NULL); if (!bRet) { return false; } } //递归到下一层目录 CreatePath(strCurPath,slash_pos+1); } else { //如果没有找到"/"了,那么就判断是否有文件 if (slash_pos!=strCurPath.length()-1) { tstring strFileName=strCurPath.substr(slash_pos+1); if (!strFileName.empty()) { bool bCreateSuc=::CreateFile(strCurPath.c_str(),FILE_ALL_ACCESS,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); return bCreateSuc; } } } }

 

调用的代码:

CLocalDiskMng m_ldiskmng; tstring strPath=_T("d://Test Directory//sfsfsa//fsfsf//fafs//a.dat"); m_ldiskmng.CreatePath(strPath,0);

 

 

你可能感兴趣的:(创建指定的目录)