C++功能模块2:mkdir()创建文件夹目录

Linux中判断某目录是否存在,如果不存在,创建该目录。
注:mkdir()一次只能创建一层目录,如果想要创建多层,需要对下述函数改造、或调用多次该函数。

一、直接上代码

//函数返回0: 目录创建成功、或目录已经存在;
//函数返回-1:目录创建失败;
int32_t opencvDirAndMkdir(const char* pathname)
{
	int ret=0;
	DIR * mydir =NULL;
	mydir=opendir(pathname); //打开目录
	if(mydir==NULL)
	{
		std::cout<<version_name_string<<"--pathname="<<pathname<<std::endl;
		ret = mkdir(pathname,0755);   //创建目录
		if(ret!=0)
		{
			std::cout<<version_name_string<<"--opendir_ret="<<ret<<std::endl;
			std::cout<<version_name_string<<"--mkdir fialed."<<std::endl;
			return -1;
		}
		std::cout<<version_name_string<<"--mkdir sucess."<<std::endl;
	}
	else
	{
		std::cout<<version_name_string<<"--dir exist."<<std::endl;
	}
	closedir(mydir);//关闭目录
	return ret;
}

int main()
{
	//假如想创建一个 /home/fatherpath/sonPath/sonOfSonPath/ 路径
	OpendirAndMkdir("/home/fatherpath/");
	OpendirAndMkdir("/home/fatherpath/sonPath/");
	int ret=OpendirAndMkdir("/home/fatherpath/sonPath/sonOfSonPath/");
	
	if(ret==0) 
		printf("path created sucess!/n");
		
	return 0;
}

二、核心函数:
1、 opendir()函数, 判断路径是否存在
头文件库

 #include 
 #include 

函数原型

DIR *opendir(const char name)

函数说明

返回一个DIR类型,是一个句柄。
传入参数name为路径,成功则返回非空DIR指针,否则返回NULL。

2、mkdir()函数,创建目录
头文件库:

#include 
#include 

函数原型:

int mkdir(const char *pathname, mode_t mode);

函数说明:

mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。

返回值:

若目录创建成功,则返回0;否则返回-1,并将错误记录到全局变量errno中。

mode值

-rw------- (600) — 只有所有者才有读取和写入的权限。

-rw-r--r-- (644) — 只有所有者才有读取和写入的权限;组群和其他人只有读取的权限。

-rwx------ (700) — 只有所有者才有读取、写入、和执行的权限。

-rwxr-xr-x (755) — 所有者有读取、写入、和执行的权限;组群和其他人只有读取和执行的权限。

-rwx--x--x (711) — 所有者有读取、写入、和执行权限;组群和其他人只有执行权限。

-rw-rw-rw- (666) — 每个人都能够读取和写入文件。

-rwxrwxrwx (777) — 每个人都能够读取、写入、和执行。

Linux中判断一个目录是否存在,如果不存在就创建这个目录

你可能感兴趣的:(c/c++语言,linux系统使用,linux,c++)