C++检测文件夹是否存在,如果不存在就创建

#include <Windows.h>
#include <io.h>
#include <direct.h>
// ************************************************************************
/// 描  述	:  检测文件夹是否存在,如果不存在就创建
//  返回值	:  void --  { 无 }
//  参  数	:  [in] std::string folder  --  { 需要创建的路径 }
// ************************************************************************
void MkDir(std::string folder)
{
	if (0 == ::_access(folder.c_str(), 0)) //判断路径是否存在,如果存在不需要再创建了
	{
		return;
	}
	std::replace(folder.begin(), folder.end(), '/', '\\');	 //将路径中的 正斜杠 统一替换成 反斜杠
	std::string folder_builder; //子文件夹路径,包含上一级的路径
	std::string sub;		//要检测的子文件夹名字
	sub.reserve(folder.size());
	for (auto it = folder.begin(); it != folder.end(); ++it) //遍历路径
	{
		const char c = *it;
		sub.push_back(c);
		if (c == '\\' || it == folder.end() - 1) //如果遇到反斜杠 或者 结尾了,就可以判断是否存在了,不存在时要创建
		{
			folder_builder.append(sub);//上一级路径 + 现在的文件夹名称
			if (0 != ::_access(folder_builder.c_str(), 0)) //检查现在的文件夹是否存在
			{
				if (0 != ::_mkdir(folder_builder.c_str())) //不存在时需要创建
				{
					return;//创建失败
				}
				else
				{
					//创建文件夹成功了
				}
			}
			sub.clear();//清空文件夹名称,然后才能存下一级的文件夹名称
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值