linux 判断目录是否存在并创建

转载 2012年03月22日 10:11:33

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;
}

 

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

 

 

 

 

 

 

 

 

 

 

***********************************

#include<stdio.h>
#include<string.h>
#include<errno.h>

#include<unistd.h>

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

extern int errno;

#define MODE (S_IRWXU | S_IRWXG | S_IRWXO)

int mk_dir(char *dir)
{
    DIR *mydir = NULL;
    if((mydir= opendir(dir))==NULL)//判断目录 
    {
      int ret = mkdir(dir, MODE);//创建目录
      if (ret != 0)
      {
          return -1;
      }
      printf("%s created sucess!/n", dir);
    }
    else
    {
        printf("%s exist!/n", dir);
    }

    return 0;
}

int mk_all_dir(char *dir)
{
    bool flag = true;
    char *pDir = dir;
    while (flag)
    {
        char *pIndex = index(pDir, '/');
        if (pIndex != NULL && pIndex != dir)
        {
            char buffer[512] = {0};
            int msg_size = pIndex - dir;
            memcpy(buffer, dir, msg_size);
            int ret = mk_dir(buffer);
            if (ret < 0)
            {
                printf("%s created failed!/n", dir);
            }
        }
        else if (pIndex == NULL && pDir == dir)
        {
            printf("dir is not directory!/n");
            return -1;
        }
        else if (pIndex == NULL && pDir != dir)
        {
            int ret = mk_dir(dir);
            if (ret < 0)
            {
                printf("%s created failed!/n", dir);
            }

            break;
        }

        pDir = pIndex+1;

    }

    return 0;
}

 

int main()
{
    char buffer[512] = {0};
    printf("please input path mane/n");
    fgets(buffer, sizeof(buffer), stdin);
    
    char *pIndex = index(buffer, '/n');
    if (pIndex != NULL)
    {
        *pIndex = '/0';
    }

    printf("check path mane %s/n", buffer);

    int ret = mk_all_dir(buffer);
    if (ret < 0)
    {
        printf("% mkdir failed!/n", buffer);
        return -1;
    }

    return 0;
}

相关文章推荐

Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等

1、字符串判断 str1 = str2      当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str1        当串的长...

Linux shell脚本中判断变量文件目录:权限、是否存在、空值、相等

#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数判断$myPath是否存在并且...

Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等

先写一些基本语法: 1、字符串判断 str1 = str2      当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str...
  • hpwzd
  • hpwzd
  • 2012-08-30 11:45
  • 1414

Linux系统shell脚本判断变量文件目录:权限、是否存在、空值、相等

先写一些基本语法: 1、字符串判断 str1 = str2      当两个串有相同内容、长度时为真 str1 != str2      当串str1和str2不等时为真 -n str...

linux+笔记:linux下判断一个文件或者目录是否存在

工作中涉及到文件系统,有时候需要判断文件和目录是否存在,下面是一些前人的经验分享。

判断目录是否存在并创建mkdir

Linux下mkdir函数 头文件库:   #include   #include     函数原型:   int mkdir(const c...

判断目录是否存在,不存在则创建

1、创建单级目录: //此函数只能创建下一级目录,多级目录无法创建 //检测路径若不存在则创建 BOOL CDetectSystemApp::CheckCreatePath(CString strP...

Linux C判断文件是否为目录或者是普通文件

主要函数: stat(),opendir(),readdir(), 主要结构体:struct dirent  和 struct stat 主要宏:S_ISDIR(),     S_ISREG() ...

VC判断文件目录是否存在的众多方法

1. 使用_access函数,函数原型为 int _access( const char *path, int mode ); 2. 使用CreateFile函数,函数原型为: HANDLE Cre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)