C++ 库研究笔记——Linux下创建文件夹
来源:互联网 发布:new balance跑鞋 知乎 编辑:程序博客网 时间:2024/06/05 16:26
转自http://blog.csdn.net/mathgeophysics/article/details/10200317
查了很多,都不怎么完成,后在stackoverflow 上了一个失推荐不多的方案,发现是最有效的。
如创建 “ab/b/c” 这个文件夹,其中,ab文件夹不要求事先不存在(若不存在,先创建)
#pragma once#include <iostream>#include <string>#include <sys/stat.h>#include <errno.h>namespace light{int mkpath(std::string s,mode_t mode=0755){ size_t pre=0,pos; std::string dir; int mdret; if(s[s.size()-1]!='/'){ // force trailing / so we can handle everything in loop s+='/'; } while((pos=s.find_first_of('/',pre))!=std::string::npos){ dir=s.substr(0,pos++); pre=pos; if(dir.size()==0) continue; // if leading / first time is 0 length if((mdret=::mkdir(dir.c_str(),mode)) && errno!=EEXIST){ return mdret; } } return mdret;}/* * 注:使用时,light::mkdir, 易与::mkdir 混淆,固去掉了int mkdir(std::string s,mode_t mode){ light::mkpath(s, mode);}*/}
测试代码:
#include "mkpath.h"int main(){ int mkdirretval; //mkdirretval=light::mkpath("foo2/bar",0755); //mkdirretval=light::mkpath("./lsl/foo2/bar"); mkdirretval=light::mkpath("lsl/foo2/bar"); std::cout << mkdirretval << '\n';}
有评论:
unix 的话,下面一个语句不就足够了吗?
system(“mkdir -p \”lsl/foo2/bar\”“);
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权限,代表其他用户拥有执行的权限
Example:
int isCreate = mkdir(path,S_IRUSR | S_IWUSR | S_IXUSR | S_IRWXG | S_IRWXO); if( !isCreate ) printf("create path:%s\n",path); else printf("create path failed! error code : %s \n",isCreate,path);
阅读全文
0 0
- C++ 库研究笔记——Linux下创建文件夹
- C++ 库研究笔记——Linux下创建文件夹
- C++库研究笔记——Linux 下高精度计时器
- linux c创建文件夹
- linux下创建文件夹
- Linux下创建文件夹
- 【C/C++】C++库研究笔记——函数名的宏定义
- Linux 下 C++ 创建文件夹
- linux下创建、删除文件夹
- linux下C遍历文件夹
- C++库研究笔记——Linux下是否需要使用memory pool?
- linux c创建文件夹,并在文件夹中创建文件
- C++库研究笔记——policy-base 实现
- C++库研究笔记——doxygen资料记录
- C++库研究笔记——几个注意(size_t)
- C++库研究笔记——函数名的宏定义
- C++库研究笔记——生成一组随机数
- C++库研究笔记——内存池实现
- TensorFlow各版本下载地址,强烈推荐
- Effective C++之七:模板与泛型编程
- 三种方法重置 mysql 数据库自增ID
- ConcurrentHashMap理解
- org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry异常的解决方法
- C++ 库研究笔记——Linux下创建文件夹
- 15分钟破解网站验证码
- nginx安装及介绍(centos6.4)
- 转:sklearn中k折交叉验证函数使用
- Java练习(1)——选择排序
- jquery中几种事件绑定的方法比较
- 机考系统公式输入扫盲帖
- 泛化误差上界的证明,说明机器能进行学习和预测的基本原理。
- oracle12c修改字段长度报错:ORA-54033要修改的列由某个虚拟表达式使用