三种C/C++创建文件夹和路径的方法
程序员文章站
2022-06-14 15:44:05
...
这个博客主要转载自:三种C/C++创建文件夹的方法。
在做调试时候,有的时候需要批量输出中间结果和数据,放到其他环境下处理,或者和别人的工作对接。这时候需要以文件的形式保存一些数据,有的时候数据分类严格的话就要按照文件夹组织数据。创建文件夹的三种常用方式如下:(其中本人选择了第二种)
第一种:MFC封装好的接口函数
PathIsDirectory //判断是否存在
//----------------------- 我是分界线 ------------
::CreateDirectory //创建
例如:
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")
#include <afx.h>
//------------------ 我是分界线 -----------------
CString path = "../../../STL/stl2";
if (!PathIsDirectory(path)) {
::CreateDirectory(path, 0);
}
//这种方法没测试,不知道。有测试过的小兄弟可以评论一下。应该也是很好用的,但是毕竟没有用过几次MFC。
第二种:编写C/C++函数实现该功能
例如:
#include <io.h>
#include <direct.h>
#define PATH_DELIMITER '\\'
//----------------------- 我是分界线 -------------------------
bool createDirectory(const std::string folder) {
std::string folder_builder;
std::string sub;
sub.reserve(folder.size());
for (auto it = folder.begin(); it != folder.end(); ++it) {
//cout << *(folder.end()-1) << endl;
const char c = *it;
sub.push_back(c);
if (c == PATH_DELIMITER || it == folder.end() - 1) {
folder_builder.append(sub);
if (0 != ::_access(folder_builder.c_str(), 0)) {
// this folder not exist
if (0 != ::_mkdir(folder_builder.c_str())) {
// create failed
return false;
}
}
sub.clear();
}
}
return true;
}
很好用,多个文件夹级联也能一次创建完成。如在A目录下创建:“FileA\FileB\FileC”的连续三个有包含关系的文件夹路径。可以一次通过,直接在参数里扔进去路径即可。
第三种:调用DOS命令
这也是我最先想到的方法,简单。但是在使用时候发现问题:当文件夹名包含空格等字符时候,就不能正常创建文件夹。不推荐广泛使用,临时用一下是可以的。
#include <stdlib.h>
//-------------------- 我是分界线 ---------------------
system("md stl2");
多个级联的路径也可以一次创建成功。
上一篇: 老生常谈python中的重载