1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C语言判断文件夹是否存在 不存在则创建

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

时间:2022-11-16 01:20:00

相关推荐

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_tst_dev; //文件所在磁盘驱动器号 _ino_tst_ino; //inode,FAT、NTFS文件系统无意义 unsigned short st_mode; //文件、文件夹的标志 shortst_nlink;//非NTFS系统上通常为1 shortst_uid; //UNIX系统上为userid,windows上为0 shortst_gid; //UNIX系统上为groupid,windows上为0 _dev_tst_rdev; //驱动器号,与st_dev相同 _off_tst_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 ) {7struct _stat st;8if ( _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 }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。