Linux C 创建多级目录

来源:互联网 发布:linux iscsi target 编辑:程序博客网 时间:2024/06/07 19:40

在JAVA中创建文件有两个方法:
mkdirs:可以创建指定目录及自动创建父级目录。
mkdir:可以创建指定目录,父级目录必须存在。

而在C中只有一个mkdir函数,效果与java的mkdir方法是相同的,感觉并不完美,所以决定写一个能够自动创建不存在的父级目录的函数。

测试程序如下:在linux下运行是没有问题的,

#include <stdio.h>#include <string.h>#include <unistd.h>/********************************************************************* 函数名:     folder_mkdirs** 函数描述:   可多级建立文件夹** 参数:       folder_path:目标文件夹路径** 返回:       1 - 目标文件夹存在,2 - 创建失败********************************************************************/int folder_mkdirs(char *folder_path){       if(!access(folder_path, F_OK)){                        /* 判断目标文件夹是否存在 */        return 1;    }    char path[256];                                        /* 目标文件夹路径 */    char *path_buf;                                        /* 目标文件夹路径指针 */    char temp_path[256];                                   /* 存放临时文件夹路径 */    char *temp;                                            /* 单级文件夹名称 */    int temp_len;                                          /* 单级文件夹名称长度 */    memset(path, 0, sizeof(path));    memset(temp_path, 0, sizeof(temp_path));    strcat(path, folder_path);    path_buf = path;    while((temp = strsep(&path_buf, "/")) != NULL){        /* 拆分路径 */        temp_len = strlen(temp);            if(0 == temp_len){            continue;        }        strcat(temp_path, "/");        strcat(temp_path, temp);        printf("temp_path = %s\n", temp_path);        if(-1 == access(temp_path, F_OK)){                 /* 不存在则创建 */            if(-1 == mkdir(temp_path, 0777)){                return 2;            }        }    }    return 1;}int main(void){    char *p = "/tmp/aaa/bbb/ccc/";    folder_mkdirs(p);    return 0;}

说一下文件夹的权限问题:
读:可以读取该文件夹中的内容,否则cd进到文件夹中ls命令会提示权限不够
写:可以创建删除该文件夹中的文件、文件夹,否则不能创建删除(但是可以修改已有的文件的内容)执行:有该权限才能进入到该文件夹中。

另外跟风一下最近的支付宝红包。。
支付宝扫二维码可以领支付红包哦~
这里写图片描述

原创粉丝点击