C++实现多级目录创建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m_buddy/article/details/81008776

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;
}

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/81008776