三种C/C++创建文件夹和路径的方法


这个博客主要转载自: 三种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");

多个级联的路径也可以一次创建成功。

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值