详解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;
}