生活随笔
收集整理的這篇文章主要介紹了
判断目录是否存在并创建mkdir
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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?
***********************************?? ?? #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;?? } ?
總結
以上是生活随笔為你收集整理的判断目录是否存在并创建mkdir的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。