原文:http://www.cnblogs.com/tangxin-blog/p/6086425.html

c++中,<io.h>中的_access可以判断文件是否存在,<direct.h>中的_mkdir可以创建文件。建单级目录:
#include <io.h>
#include <direct.h>
#include <string>
int main()
{std::string prefix = "G:/test/";if (_access(prefix.c_str(), 0) == -1)    //如果文件夹不存在_mkdir(prefix.c_str());                //则创建
}
建多级目录:
最后一个如果是文件夹的话,需要加上 '\\' 或者 '/'
#include <io.h>
#include <direct.h>
#include <string>
int createDirectory(std::string path)
{int len = path.length();char tmpDirPath[256] = { 0 };for (int i = 0; i < len; i++){tmpDirPath[i] = path[i];if (tmpDirPath[i] == '\\' || tmpDirPath[i] == '/'){if (_access(tmpDirPath, 0) == -1){int ret = _mkdir(tmpDirPath);if (ret == -1) return ret;}}}return 0;
}

这是另一个版本,跨平台的:

#ifdef WIN32
#include <io.h>
#include <direct.h>
#else
#include <unistd.h>
#include <sys/stat.h>
#endif
#include <stdint.h>
#include <string>
#define MAX_PATH_LEN 256#ifdef WIN32
#define ACCESS(fileName,accessMode) _access(fileName,accessMode)
#define MKDIR(path) _mkdir(path)
#else
#define ACCESS(fileName,accessMode) access(fileName,accessMode)
#define MKDIR(path) mkdir(path,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
#endif// 从左到右依次判断文件夹是否存在,不存在就创建
// example: /home/root/mkdir/1/2/3/4/
// 注意:最后一个如果是文件夹的话,需要加上 '\' 或者 '/'
int32_t createDirectory(const std::string &directoryPath)
{uint32_t dirPathLen = directoryPath.length();if (dirPathLen > MAX_PATH_LEN){return -1;}char tmpDirPath[MAX_PATH_LEN] = { 0 };for (uint32_t i = 0; i < dirPathLen; ++i){tmpDirPath[i] = directoryPath[i];if (tmpDirPath[i] == '\\' || tmpDirPath[i] == '/'){if (ACCESS(tmpDirPath, 0) != 0){int32_t ret = MKDIR(tmpDirPath);if (ret != 0){return ret;}}}}return 0;
}int32_t main(int32_t argc, char *argv[])
{if (argc == 2){return createDirectory(argv[1]);}return 0;
}

C++ 创建单级、多级目录相关推荐

  1. Linux第六章:3.linux下创建文件夹(创建目录)、使用mkdir命令创建单级和多级目录、linux下删除文件夹(目录),rmdir命令、rm -rf、touch命令创建文件

    一.mkdir 命令 1.创建单级目录 mkdir 你要创建的目录 1.1 示例: 2.创建多级目录 mkdir -p 你要创建的目录们 2.1 示例: 二.rmdir 命令 1.rmdir只能删除 ...

  2. c++创建单级目录 多级目录,判断是否存在

    c++中,<io.h>中的_access可以判断文件是否存在,<direct.h>中的_mkdir可以创建文件. 建单级目录:#include <io.h> #in ...

  3. 91文件夹操作——创建和删除多级目录

    文章目录 1.创建多级目录 2.应用 1.创建多级目录 使用mkdir()函数只能创建一级目录,如果想创建多级目录,可以使用os模块提供的makedirs()函数,该函数用于采用递归的方式创建目录.m ...

  4. os模块创建多级目录

    背景 python的os模块是可以动态创建目录的,但是很多人只了解单级目录的创建方法,其实os模块封装了完整的目录创建相关的方法. 创建单级目录 os.mkdir('./path') 创建多级目录 o ...

  5. 4.1.3 OS之文件目录目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身

    文章目录 0.思维导图 1.文件控制块 对目录的操作 2.单级目录结构 3.两级目录结构 4.多级目录结构(树形目录结构) 5.无环图目录结构 6.索引节点(FCB的改进)瘦身 0.思维导图 1.文件 ...

  6. c++ 判断文件夹是否存在,不存在则创建(可建多级目录)

    c++中,<io.h>中的_access可以判断文件是否存在,<direct.h>中的_mkdir可以创建文件. 建单级目录: #include <io.h> #i ...

  7. IO流案例,集合到文件数据排序、复制单级和多级文件夹及复制文件的异常处理

    目录 一.集合到文件数据排序 二.复制单级文件夹 三.复制多级文件夹 四.复制文件的异常处理 基本做法: JDK7版本改进: JDK9版本改进: 一.集合到文件数据排序 需求: 键盘录入5个学生信息( ...

  8. (47)fs创建多级目录

    一.fs创建多级目录说明 fs.mkdir('./a/b/c') 这样写可以不可以呢? 答案:不可以. 多级目录的创建方式:一般使用递归的方式进行创建. 如何操作? 先创建./a 再创建./a/b 最 ...

  9. php创建多级目录完整封装类操作

    创建多级目录函数中调用创建指定下的指定文件的函数: public function create_dir($dir,$mode=0777){return is_dir($dir) or ($this- ...

最新文章

  1. SimCSE:用于句子嵌入的对比学习
  2. 你以为你真的了解final吗?
  3. UIDatePicker | 时间选择器
  4. java 多线程的使用_Java的多线程1:线程的使用
  5. php curl title,PHP中使用CURL获取页面title例子
  6. jmeter ForEach控制器学习
  7. java递归实现多级菜单栏_vue+ java 实现多级菜单递归效果
  8. 软件工程和计科专业对比,哪一个更适合毕业做程序员?
  9. linux search用法,在Linux中使用ldapsearch只返回一个值
  10. php mvc vue 调用js函数_js 匿名函数自调用
  11. The Second Assignment
  12. [转载] IoT设备配网方式总结
  13. fastjson list转json
  14. laypage ajax,laypage.js分页插件使用方法详解
  15. PHP僵尸网络,byob--建立自己的僵尸网络
  16. android 离线语言识别
  17. 高斯约当法矩阵求逆(Matlab实现)
  18. JavaSE进阶26 - IO流概述、字节流、字符流、转换流、缓冲流
  19. 接口请求中post与put的区别
  20. 美国国防部发布集成化无人系统路线图

热门文章

  1. NeHe教程Qt实现——lesson05
  2. linux中的3d设计软件,Linux专业画室:免费3D图形设计工具
  3. 查画图linux进程,分享|6 款面向 Linux 用户的开源绘图应用程序
  4. win7只能管理计算机软件吗,win7可以管理多少内存,win7内存优化软件
  5. secureCrt开启oracle
  6. mega_[MEGA DEAL]终极Java专家认证捆绑包(98%)
  7. B站王道论坛计算机网络,成都理工大学计算机网络考研学长经验分享
  8. oracle flashback table 参数,Oracle10g中FLASHBACK TABLE语句恢复DML误操作
  9. php屏幕抓取,PHP抓屏函数实现屏幕快照代码分享
  10. 基于 Token 的多平台身份认证架构设计