在C中创建一个新目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C中创建一个新目录相关的知识,希望对你有一定的参考价值。

我想编写一个检查目录是否存在的程序;如果该目录不存在,那么它会在其中创建目录和日志文件,但如果该目录已经存在,那么它只是在该文件夹中创建一个新的日志文件。

我将如何在C中使用Linux执行此操作?

答案

查看stat以检查目录是否存在,

mkdir一样,创建一个目录。

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

struct stat st = {0};

if (stat("/some/directory", &st) == -1) {
    mkdir("/some/directory", 0700);
}

您可以使用man 2 statman 2 mkdir命令查看这些函数的手册。

另一答案

你可以使用mkdir:

$ man 2 mkdir

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

 int result = mkdir("/home/me/test.txt", 0777);
另一答案

我想编写一个程序(...)创建目录和(...)文件

因为这是一个非常常见的问题,这里是创建多级目录而不是调用fopen的代码。我正在使用gnu扩展名来打印printf的错误消息。

void rek_mkdir(char *path)
{
  char *sep = strrchr(path, '/' );
  if(sep != NULL) {
    *sep = 0;
    rek_mkdir(path);
    *sep = '/';
  }
  if( mkdir(path,0777) && errno != EEXIST )
    printf("error while trying to create '%s'\n%m\n",path ); 
}


FILE *fopen_mkdir( char *path, char *mode )
{
    char *sep = strrchr(path, '/' );
    if(sep ) { 
       char *path0 = strdup(path);
       path0[ sep - path ] = 0;
       rek_mkdir(path0);
       free(path0);
    } 
    return fopen(path,mode);
}

以上是关于在C中创建一个新目录的主要内容,如果未能解决你的问题,请参考以下文章

在动态 viewpager 片段中创建 recyclerviews

在片段android中创建listview

如何在指定路径中创建目录?

在C中创建一个没有重复的新数组

在 Visual Studio 中创建构造函数的代码片段或快捷方式

在片段中创建自定义列表视图时出错。必需的活动,找到的片段