C语言判断文件夹是否存在,不存在则创建
生活随笔
收集整理的這篇文章主要介紹了
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语言判断文件夹是否存在,不存在则创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MIPI接口资料汇总
- 下一篇: langid 代码对应的语种名