Linux下mkdir函数
头文件库:

#include <sys/stat.h> #include <sys/types.h>

  函数原型:

int mkdir(const char *pathname, mode_t mode); 函数说明: mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。 返回值: 若目录创建成功,则返回0;否则返回-1,并将错误记录到全局变量errno中。 mode方式:

S_IRWXU 00700权限,代表该文件所有者拥有读,写和执行操作的权限
S_IRUSR(S_IREAD) 00400权限,代表该文件所有者拥有可读的权限
S_IWUSR(S_IWRITE) 00200权限,代表该文件所有者拥有可写的权限
S_IXUSR(S_IEXEC) 00100权限,代表该文件所有者拥有执行的权限
S_IRWXG 00070权限,代表该文件用户组拥有读,写和执行操作的权限
S_IRGRP 00040权限,代表该文件用户组拥有可读的权限
S_IWGRP 00020权限,代表该文件用户组拥有可写的权限
S_IXGRP 00010权限,代表该文件用户组拥有执行的权限
S_IRWXO 00007权限,代表其他用户拥有读,写和执行操作的权限
S_IROTH 00004权限,代表其他用户拥有可读的权限
S_IWOTH 00002权限,代表其他用户拥有可写的权限
S_IXOTH 00001权限,代表其他用户拥有执行的权限

1   用   int   access(const   char   *pathname,   int   mode);   判断有没有此文件或目录 --它区别不出这是文件还是目录
2   用   int   stat(const   char   *file_name,   struct   stat   *buf); 判断该文件或目录是否否存在 ;得到st_mode,然后判断是不是目录文件。 
    stat()系统调用看是否成功,不成功就不存在,成功判断返回的st_mode是否是一个文件夹。

********************************************************************
linux c关于目录是否存在,新建目录等操作
1. 创建目录

#include <sys/stat.h>
       #include <sys/types.h>

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

运用条件:只能在已存在的目录下建立一级子目录

返回值:  返回0表示成功,返回-1表述出错。

mode 表示新目录的权限,可以取以下值:

其中,mode就用0777,0755这种形式。

2. 判断一个目录是否存在

可以使用opendir来判断,这是比较简单的办法。

#include <sys/types.h>
       #include <dirent.h>

DIR *opendir(const char *name);

The  opendir()  function  opens  a  directory  stream  corresponding to the directory name, and returns a pointer to the directory

stream.  The stream is positioned at the first entry in the directory.

代码
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <cstddef>
int main()
{
 if(NULL==opendir("/d1/liujian/readdb/adTest/data/html"))
   mkdir("/d1/liujian/readdb/adTest/data/html",0775);
 return 0;
}

以上代码可以测试一个目录是否存在,如果不存在就创建这个目录。

[cpp] view plaincopyprint?
  1. ***********************************
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include<errno.h>
  5. #include<unistd.h>
  6. #include<dirent.h>
  7. #include<sys/types.h>
  8. #include<sys/stat.h>
  9. extern int errno;
  10. #define MODE (S_IRWXU | S_IRWXG | S_IRWXO)
  11. int mk_dir(char *dir)
  12. {
  13. DIR *mydir = NULL;
  14. if((mydir= opendir(dir))==NULL)//判断目录
  15. {
  16. int ret = mkdir(dir, MODE);//创建目录
  17. if (ret != 0)
  18. {
  19. return -1;
  20. }
  21. printf("%s created sucess!/n", dir);
  22. }
  23. else
  24. {
  25. printf("%s exist!/n", dir);
  26. }
  27. return 0;
  28. }
  29. int mk_all_dir(char *dir)
  30. {
  31. bool flag = true;
  32. char *pDir = dir;
  33. while (flag)
  34. {
  35. char *pIndex = index(pDir, '/');
  36. if (pIndex != NULL && pIndex != dir)
  37. {
  38. char buffer[512] = {0};
  39. int msg_size = pIndex - dir;
  40. memcpy(buffer, dir, msg_size);
  41. int ret = mk_dir(buffer);
  42. if (ret < 0)
  43. {
  44. printf("%s created failed!/n", dir);
  45. }
  46. }
  47. else if (pIndex == NULL && pDir == dir)
  48. {
  49. printf("dir is not directory!/n");
  50. return -1;
  51. }
  52. else if (pIndex == NULL && pDir != dir)
  53. {
  54. int ret = mk_dir(dir);
  55. if (ret < 0)
  56. {
  57. printf("%s created failed!/n", dir);
  58. }
  59. break;
  60. }
  61. pDir = pIndex+1;
  62. }
  63. return 0;
  64. }
  65. int main()
  66. {
  67. char buffer[512] = {0};
  68. printf("please input path mane/n");
  69. fgets(buffer, sizeof(buffer), stdin);
  70. char *pIndex = index(buffer, '/n');
  71. if (pIndex != NULL)
  72. {
  73. *pIndex = '/0';
  74. }
  75. printf("check path mane %s/n", buffer);
  76. int ret = mk_all_dir(buffer);
  77. if (ret < 0)
  78. {
  79. printf("% mkdir failed!/n", buffer);
  80. return -1;
  81. }
  82. return 0;
  83. }

判断目录是否存在并创建mkdir相关推荐

  1. Python 标准库之 os (获取当前目录、读取/设置环境变量、重命名文件、运行shell命令、创建/删除/查看目录文件、判断目录/文件/存在、获取绝对路径、获取文件名、获取换行符、获取路径分隔符)

    1. os与sys模块的官方解释如下: os This module provides a portable way of using operating system dependent funct ...

  2. python 判断目录和文件是否存在,若不存在即创建

    python 判断目录和文件是否存在,若不存在即创建 import os dirs = './11'if not os.path.exists(dirs):os.makedirs(dirs)

  3. linux下python脚本判断目录和文件是否存在

    if os.path.isdir('E:test'):    pass else:    os.mkdir('E:test') ##os.mkdir() 只会创建一个目录,不可以级联创建 eg2: i ...

  4. Linux目录、文件的创建与删除

    目录的创建: mkdir - make directories 使用示例及说明: [root@localhost ~]# mkdir /root/x/y/z mkdir: cannot create ...

  5. php判断目录是否有写的权限,php中判断文件空目录是否有读写权限的函数代码_php技巧...

    上面的函数有一个问题就是filename 必需.规定要检查的文件 ,必须是文件啊,目录不可判断,下面我们来判断空目录. 实例1 该功能非常常用,特别在一些需要生成静态文件的项目中,一个目录是否可以,关 ...

  6. java目录实用工具_JAVA 创建文件和文件夹,删除文件和文件夹的实用工具

    package com.file; import java.io.File; import java.io.IOException; //创建新文件和目录 public class CCRDFile ...

  7. github上传文件时,目录、文件的创建、复制、删除和移动等操作

    文件的创建.复制.删除和移动等操作 创建文件命令:touch命令 功能说明:改变文件或目录时间. 语 法:touch [-acfm][-d <日期时间>][-r <参考文件或目录&g ...

  8. 【错误记录】Android 分区存储下的 SD 卡应用专属外部存储空间目录访问 ( 需手动创建应用专属外部存储空间目录 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 开发时 , 需要向外置 SD 卡中拷贝一些文件 , 应用读取这些文件 , 进行相关配置 ; 但是 Android 系统 , 并不会主动为应用创建文件 ...

  9. Java 目录操作一(递归创建目录、删除目录、判断目录是否为空、判断文件是否隐藏、获取目录大小、在指定目录中查找文件)

    递归创建目录 import java.io.File;public class Main {public static void main(String[] args) {String directo ...

最新文章

  1. 像诗一样的 Javascript 代码(转)
  2. Deep Learning 中文翻译
  3. 叠数的加法与字符串 RUNOOB python练习题 18
  4. html 图片 高度无效_HTML笔记(详细)
  5. 当芯片教父遇上伊隆马斯克:自动驾驶路在何方
  6. Rust 能取代 Python,更好的实现神经网络?
  7. 条款27:尽量少做转型动作
  8. 自动驾驶感知-车道线系列(二)——Canny边缘检测
  9. Linux之-atime、ctime、mtime
  10. Ubuntu20.04下使用C++ OpenCV单应性矩阵
  11. 360环视TOP10供应商榜单发布!未来五年市场规模将超300亿元
  12. CSS像素(px)、物理像素(pt)、rem、em、rpx
  13. 技术团队人员管理:组建团队的方式
  14. 火灾隐患是查不完的,消防监管要着力于提升单位消防能力
  15. 数据分析报告常见步骤
  16. 【基础知识】BSS段,数据段,代码段,堆栈段
  17. 百度副总裁李硕:通过“一企一档”等模式提升企业智能化水平
  18. Python 量化投资实战教程(6) — 交易平均收益率
  19. 动态修改JBPM之Timer组件的duedate值
  20. 每日三省吾身,省什么?

热门文章

  1. 修改lastpass主密码后需重启firefox才能加载已保存的站点密码或用导入工具
  2. windows上的几个常用端口号
  3. VMware Workstation中Linux虚拟机安装VMware-Tools
  4. 牛客 - Sixth Sense(贪心+二分)
  5. CodeForces - 1358C Celex Update(思维)
  6. 漫游Kafka设计篇之数据持久化
  7. (四)boost库之正则表达式regex
  8. Anbox 实现分析 3:会话管理器与容器管理器的通信
  9. Python识别图片的清晰度
  10. Kafka分区分配策略(2)——RoundRobinAssignor和StickyAssignor