当前位置: 首页 > ds >正文

【C/C++】创建文件夹

在 C/C++ 中,在指定目录下创建 log 文件夹可以通过以下方法实现:


方法 1:C++17 使用 <filesystem>(推荐)

#include <filesystem>
#include <iostream>namespace fs = std::filesystem; // C++17 起支持int main() {std::string targetDir = "/path/to/your/directory"; // 替换为你的目标目录fs::path logDir = fs::path(targetDir) / "log";     // 拼接路径try {if (!fs::exists(logDir)) {fs::create_directory(logDir); // 创建文件夹std::cout << "成功创建 log 文件夹: " << logDir << std::endl;} else {std::cout << "log 文件夹已存在: " << logDir << std::endl;}} catch (const fs::filesystem_error& e) {std::cerr << "错误: " << e.what() << std::endl;}return 0;
}

优点

  • 跨平台(Windows/Linux/macOS)。
  • 自动处理路径分隔符(/\)。

编译选项

  • GCC/Clang: -std=c++17 -lstdc++fs
  • MSVC: /std:c++17

方法 2:C 语言(跨平台,需手动处理)

#include <stdio.h>
#include <sys/stat.h>  // mkdir (POSIX)
#include <direct.h>    // _mkdir (Windows)#ifdef _WIN32#define MKDIR(dir) _mkdir(dir)
#else#define MKDIR(dir) mkdir(dir, 0755) // Linux/macOS 需设置权限
#endifint main() {const char* targetDir = "/path/to/your/directory"; // 替换为你的目标目录char logDir[256];snprintf(logDir, sizeof(logDir), "%s/log", targetDir);if (MKDIR(logDir) == 0) {printf("成功创建 log 文件夹: %s\n", logDir);} else {perror("创建文件夹失败");}return 0;
}

注意

  • Windows 使用 _mkdir,Linux/macOS 使用 mkdir
  • 需手动拼接路径,确保目标目录存在。

方法 3:系统命令(简单但不安全)

#include <cstdlib>int main() {system("mkdir -p /path/to/your/directory/log");  // Linux/macOS// system("mkdir \"C:\\path\\to\\your\\directory\\log\"");  // Windowsreturn 0;
}

缺点

  • 依赖系统 shell,存在注入风险(如路径含特殊字符)。
  • 不推荐在生产代码中使用。

关键点总结

  1. 权限问题
    • Linux/macOS 需设置权限(如 0755)。
    • Windows 需确保目标目录可写。
  2. 路径分隔符
    • C++17 的 filesystem 自动处理。
    • C 语言需手动处理(Windows 用 \,Linux 用 /)。
  3. 错误处理
    • 检查目录是否已存在(避免重复创建)。
    • 捕获异常(C++)或检查返回值(C)。

根据项目需求选择合适的方法!

http://www.xdnf.cn/news/13929.html

相关文章:

  • FreeRTOS事件组
  • Jetpack LiveData 深度解析
  • 什么是EcoVadis审核?EcoVadis审核的评估框架,EcoVadis审核流程
  • Odoo 企业版和社区版区别系列文章之一 日历模块 Calendar
  • 瑞利光测:桥梁结构健康监测解决方案,以光纤光栅技术筑牢安全防线
  • 小结:Spring AOP 切点表达式
  • 中国人工智能社区发展研究报告(2025)
  • MySQL 索引类型及其必要性与优点
  • 【QT】 QGraphicsItem 获取点坐标的几种方法
  • error report
  • 5种常见的网络保密通信协议
  • 【Linux】regmap子系统
  • 智慧工厂物联网解决方案:纺织厂边缘计算网关应用
  • 图像处理控件Aspose.Imaging教程:图像处理控件Aspose.Imaging教程:在Java中构建 SVG 图像调整器
  • vanna多表关联的实验
  • 将idea的目录结构以文本导出
  • MySQL 8.0的数据库root用户默认无法远程登录,需要修改root的远程授权
  • 使用AkShare获取大A列表
  • ( github actions + workflow 03 ) 手动添加 token, 防止权限不够
  • 运营商实名验证接口如何用Python实现调用?
  • 新疆大学具身导航新范式!DOPE:基于双重对象感知增强网络的视觉语言导航
  • golang -- map实现原理
  • 单片机队列功能模块的实战和应用
  • Elasticsearch的数据同步
  • 在线机考|2025年华为暑期实习春招秋招编程题(最新)——第2题_网络整改
  • 基于mapreduce的气候分析系统
  • Dify实战案例:AI邮件批量发送器!
  • Unit 3 Q-Learning 简介
  • 06-Python流程控制
  • [论文阅读] 人工智能 | ComfyUI-R1: Exploring Reasoning Models for Workflow Generation