bool ImgprocTask::CheckPathExist(std::string path)
{
if(access(path.c_str(),0) == -1)
{
return false;
}
return true;
}
void ImgprocTask::CreateDir(std::string filepath)
{
std::string::size_type tmp_pos_begin = 0;
std::string::size_type tmp_pos = 0;
tmp_pos = filepath.find('/', tmp_pos_begin);
while( tmp_pos != filepath.npos)
{
std::string tmpdir = filepath.substr(0,tmp_pos);
if(tmpdir.empty())
{
return;
}
if(!CheckPathExist(tmpdir))
{
mkdir(tmpdir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
}
tmp_pos_begin = tmp_pos + 1;
tmp_pos = filepath.find('/', tmp_pos_begin);
}
}
这里利用了string::find()和string::substr()函数,用于路径分割
需要注意的是这边适用于完整的文件路径,如果filepath参数仅仅是文件夹路径,则会出错