/**
* 系统文件/目录完备性检查
* @param path 文件(夹)绝对路径名
* @param IsDir true 为文件夹, false 为文件
* @param InitStr 此参数为文件初始化的内容,默认为NULL
* @return true 表示成功,false 表示失败
* @sample
*
*/
bool sysAccess(const char * path, bool IsDir,const char* InitStr = NULL)
{
// 检查是否存在
if(access(path,F_OK) == 0)
return true;
// 不存在,创建!
if(*path != '/')
{
return false;
}
// 支持深层创建
char *pPath = (char *)malloc(strlen(path)+1);
if(NULL == pPath)
return false;
const char* pIndex = path;
while(*(++pIndex))
{
memset(pPath, 0, strlen(path)+1);
if((pIndex = strchr(pIndex+1, '/')) == 0)
break;
// 创建
memcpy(pPath, path, (pIndex-path)+1);
if(access(pPath, F_OK) == 0)
continue;
if(mkdir(pPath, S_IRWXU | S_IRWXG | S_IRWXO) == 0)
{
continue;
}
else
{
free(pPath);
return false;
}
}
free(pPath);
if(access(path,F_OK) == 0)
{
goto CreatOk;
}
else if(IsDir)
{
if(mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) == 0)
goto CreatOk;
else
return false;
}
else
{
int ID = creat(path, S_IRWXU | S_IRWXG | S_IRWXO);
if(-1 != ID)
{
if(Initstr)
{
if(write(ID,Initstr,strlen(Initstr))<0)
{
close(ID);
return false;
}
}
close(ID);
goto CreatOk;
}
else
{
return false;
}
}
CreatOk:
printf("\"%s\" is not exist, and creat it ok!", path);
return true;
}
需要的头文件:
#include <string.h>