tb-common-utils源码分析(3):文件和目录的基本操作

工作之前总在windows下写程序,进入linux之后,对文件和目录操作的很多方法不太熟,本文介绍一下tb-common-utils中对文件和目录操作封闭的几个函数,虽然简单,但还是值得学习的。

今天要介绍一下CFileUtil这个类,该类仅提供三个静态函数:mkdirs、isDirectory以及isSymLink。

 

首先是mkdirs,该函数用于创建多级目录,注意,不能将常量字符串传给该函数。

bool CFileUtil::mkdirs(char *szDirPath) { struct stat stats; // 如果目录存在,则直接返回 if (lstat (szDirPath, &stats) == 0 && S_ISDIR (stats.st_mode)) return true; // 得到系统原来的umask值 mode_t umask_value = umask (0); // 还原系统umask值 umask (umask_value); // 得到我们的umask值 mode_t mode = (S_IRWXUGO & (~ umask_value)) | S_IWUSR | S_IXUSR; char *slash = szDirPath; while (*slash == '/') slash++; while (1) { slash = strchr (slash, '/'); if (slash == NULL) break; *slash = '/0'; int ret = mkdir(szDirPath, mode); *slash++ = '/'; if (ret && errno != EEXIST) { return false; } while (*slash == '/') slash++; } // 创建最后一级目录 if (mkdir(szDirPath, mode)) { return false; } return true; } 

另外两个函数就比较简单了,在此不作介绍。

你可能感兴趣的:(linux,工作,windows,struct,null)