日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言判断文件夹是否存在,不存在则创建

發布時間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言判断文件夹是否存在,不存在则创建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

windows下需要包含頭文件<io.h>

需要用到access函數判斷文件夾是否存在,mkdir創建文件夾,示例代碼如下:

#include <string> #include <io.h> //成功創建返回文件夾路徑,否則返回空字符串 string CreatePath(string strFolderPath) {if (_access(strFolderPath.c_str()), 0){if(mkdir(strFolderPath.c_str()))return "";}return strFolderPath; }

_access函數原型如下:
int _access(
const char *path,
int mode
);
其中mode含義如下:
0,檢查文件或者文件夾是否存在
2,檢查文件或者文件夾是否只寫
4,檢查文件或者文件夾是否只讀
6,檢查文件或者文件夾是否可讀寫
這個函數主要作用是用來判斷文件或者文件夾讀寫屬性的,它沒有區分文件和文件夾的功能,因此使用它來判斷文件夾是否存在并不合適,更合適的函數是 _stat函數,其函數原型為

int _stat(
const char *path,
struct _stat *buffer
);

struct _stat定義如下:

struct stat { _dev_t st_dev; //文件所在磁盤驅動器號 _ino_t st_ino; //inode,FAT、NTFS文件系統無意義 unsigned short st_mode; //文件、文件夾的標志 short st_nlink; //非NTFS系統上通常為1 short st_uid; //UNIX系統上為userid,windows上為0 short st_gid; //UNIX系統上為groupid,windows上為0 _dev_t st_rdev; //驅動器號,與st_dev相同 _off_t st_size; //文件字節數 time_t st_atime; //上次訪問時間 time_t st_mtime; //上次修改時間 time_t st_ctime; //創建時間 };

從結構體中可以看到,_stat函數不但可以區分出文件和文件夾,還能夠得到修改時間和創建時間等信息,它是一個比較強大的函數。

拿結構體中的st_mode成員與S_IFDIR 、S_IFREG 相與,則可以判斷是文件夾還是文件,偽代碼如下:

void pathIs( const char* path ) {7 struct _stat st;8 if ( _stat ( path, &st ) == 0 ) {9 if ( st.st_mode & S_IFDIR ) { 10 path是文件夾; 11 } else if ( s.st_mode & S_IFREG ) { 12 path是文件; 13 } else { 14 不知道path是啥; 15 } 16 } else { 17 文件或文件夾不存在; 18 } 19 }

總結

以上是生活随笔為你收集整理的C语言判断文件夹是否存在,不存在则创建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。