详解C++循环创建多级目录及判断目录是否存在的方法
C++循环创建多级目录
#include"unitfiles.h" #ifdefWIN32 #include<direct.h> #include<io.h> #elifLINUX #include<stdarg.h> #include<sys/stat.h> #endif #ifdefWIN32 #defineACCESS_access #defineMKDIR(a)_mkdir((a)) #elifLINUX #defineACCESSaccess #defineMKDIR(a)mkdir((a),0755) #endif intCreatDir(char*pszDir) { inti=0; intiRet; intiLen=strlen(pszDir); //在末尾加/ if(pszDir[iLen-1]!='\\'&&pszDir[iLen-1]!='/') { pszDir[iLen]='/'; pszDir[iLen+1]='\0'; } //创建目录 for(i=0;i<=iLen;i++) { if(pszDir[i]=='\\'||pszDir[i]=='/') { pszDir[i]='\0'; //如果不存在,创建 iRet=ACCESS(pszDir,0); if(iRet!=0) { iRet=MKDIR(pszDir); if(iRet!=0) { return-1; } } //支持linux,将所有\换成/ pszDir[i]='/'; } } return0; }
根据别人的结果进行了修改,需要注意的问题是参数不是const的,因此可以进行修改。
C++判断指定目录是否存在
boolIsDirExist(stringfilename) { size_tlen=filename.length(); if(filename[len-1]!='/'&&filename[len-1]!='\\') filename.append("/"); filename.append("000.tmp"); ofstreamoutf(filename.c_str()); boolflag=outf; if(outf) { outf.close(); remove(filename.c_str()); } returnflag; }