C++ 如果没有创建文件夹';如果不存在,就什么也不做
我想创建一个名为C++ 如果没有创建文件夹';如果不存在,就什么也不做,c++,linux,directory,mkdir,C++,Linux,Directory,Mkdir,我想创建一个名为sessionname的文件夹。如果已经存在同名文件夹,则可以,我不想做任何事情 现在我这样做: finalpath = "/home/Documents" finalpath.append(path + "/" + sessionname); if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1) { //INVALID PATH
sessionname
的文件夹。如果已经存在同名文件夹,则可以,我不想做任何事情
现在我这样做:
finalpath = "/home/Documents"
finalpath.append(path + "/" + sessionname);
if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1)
{
//INVALID PATH
std::cout << "path is invalid, cannot create sessionnamefolder" << std::endl;
throw std::exception();
}
finalpath=“/home/Documents”
追加(路径+“/”+会话名);
如果(mkdir(finalpath.c_str(),S|u IRWXU|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
//无效路径
std::cout如评论所述,在mkdir
-创建目录-手册页面上提到了它,其中一个错误mkdir
可以让您得到的是if[EEXIST]
->命名文件存在。因此它失败。请参阅mkdir
主页。这里有一个可能的堆栈溢出问题。如评论所述,它在mkdir
-创建目录-手动页面中提到,如果mkdir
出现错误,您可以得到的一个错误是如果[EEXIST]
->命名文件存在。因此它失败。有关mkdir
主页,请参阅。这里有一个可能的堆栈溢出
如何检查mkdir是否因字符串无效或字符串无效但文件夹已存在而失败
来自mkdir()
的返回代码显示函数是否成功。如果失败,应检查特殊变量errno
,有关详细信息,请访问
if(mkdir(finalpath.c_str(),S|u IRWXU | S|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
if(errno==EEXIST){
//阿雷迪存在
}否则{
//别的
标准::cout
如何检查mkdir是否因字符串无效或字符串无效但文件夹已存在而失败
来自mkdir()
的返回代码显示函数是否成功。如果失败,应检查特殊变量errno
,有关详细信息,请访问
if(mkdir(finalpath.c_str(),S|u IRWXU | S|u IRWXG | S|u IROTH | S|IXOTH)=-1)
{
if(errno==EEXIST){
//阿雷迪存在
}否则{
//别的
std::cout Read你读过吗?你检查过可以从中得到什么错误吗?Read你读过吗?你检查过可以从中得到什么错误吗?可能OP不知道从哪里得到错误代码。可能OP不知道从哪里得到错误代码。你需要包括S_IRWXU,S_IRWXG。你的意思是std::runtime\u error
而不是std::runtime_exception
?我找不到任何已经存在的目录上的文档,但存在的权限与您对mkdir的调用不同。您需要包括S_IRWXU、S_IRWXG。您的意思是std::runtime_error
而不是std::runtime_exception
?我找不到任何d已存在的目录上的文档,但其权限与对mkdir的调用不同。
if (mkdir(finalpath.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == -1)
{
if( errno == EEXIST ) {
// alredy exists
} else {
// something else
std::cout << "cannot create sessionnamefolder error:" << strerror(errno) << std::endl;
throw std::runtime_error( strerror(errno) );
}
}