1. 前言
在编写C++程序的时候难免会操作到目录结构,一般来讲实现创建目录是使用_mkdir()函数,但是呢这个函数就只能创建一级目录,想要创建两级或是更多级的目录那就不行了。这里在总结了网上的资料将实现代码贴出,以供学习使用
2. 实现
#include "stdafx.h"
#include <string>
#include <iostream>
#include <io.h>
#include <direct.h>
using namespace std;
//创建多级目录
bool my_create_dir(std::string path)
{
int m = 0, n;
string str1, str2;
str1 = path;
str2 = str1.substr(0, 2);
str1 = str1.substr(3, str1.size());
while (m >= 0)
{
m = str1.find('\\');
str2 += '\\' + str1.substr(0, m);
n = _access(str2.c_str(), 0); //判断该目录是否存在
if (n == -1)
{
if (_mkdir(str2.c_str()) != 0) //创建目录
{
return false;
}
}
str1 = str1.substr(m + 1, str1.size());
}
return true;
}
// 检查文件夹是否存在不存在就创建一个
//path为绝对路径,例如E:\123\432\123
bool SavePathCheack(std::string path)
{
if (path.length() <= 0)
return false;
errno_t err = 0;
// Check for existence.
if ((err = _access_s(path.c_str(), 0)) != 0)
{
if (!my_create_dir(path)) //创建文件夹
return false;
else
{
std::cout << "创建文件夹成功" << path << std::endl;
return true;
}
}
else
std::cout << path << "文件夹已经存在" << std::endl;
return true;
}