如何简单地创建一个目录(多级目录)

如何创建一个目录?除了mkdir以外,有一个函数也很好用的。那就是CreateDirectory()。

CreateDirectory():

若目录不存在,则创建。若目录已存在,则什么都不做

该函数只创建一级目录,假如我们要创建二级以上目录时,应该分开来一步步创建。

如果要创建多级目录,就要自己封装一下,可以参考这里的代码 ,但是,如果你发现编译的时候报错:“const wchar_t *" 类型的实参与 "LPCSTR" 类型的形参不兼容”,那么你需要把项目配置中的字符集改为unicode就可以了,可以参考这里的解决方案。亲测可用

#include <windows.h>

std::string dir = "D:/test";
CreateDirectory(dir , NULL);//若不存在,则创建。若已存在,则什么都不做

为防止链接损坏,将链接中的内容拷贝如下:

==========================================================================

1.引入静态库

#include "shlwapi.h"

#pragma comment(lib,"shlwapi.lib")

2.函数

const wchar_t* wcstrrchr(const wchar_t* str, const wchar_t wc)
{
    const wchar_t* pwc = NULL;
    for (int i=wcslen(str)-1;i>=0;i--)
    {
        if (str[i] == wc)
        {
            pwc = str + i;
            break;
        }
    }
    return pwc;
}
 
bool createMultiDir(const wchar_t* path)
{
    if (path == NULL) return false;
    const wchar_t* pwcStrrchr = wcstrrchr(path,L'\\');
    if (!pwcStrrchr) return false;
    if (PathIsDirectory(path)) return true;
 
    wchar_t wsSubPath[MAX_PATH] = {};
    memset(wsSubPath,0,sizeof(wsSubPath));
    for (int i=0; i<pwcStrrchr-path; i++)
        wsSubPath[i] = *(path+i);
    createMultiDir(wsSubPath);
    if(CreateDirectory(path,NULL)) return true;
    return false;
}
3.调用案例

createMultiDir(L"d:\\whish\\test\\好孩子\\宝马\\测试.txt"); //绝对路径
createMultiDir(L".\\whish\\test\\好孩子\\宝马\\测试.txt");//相对路径
--------------------- 

猜你喜欢

转载自blog.csdn.net/Johnisjohn/article/details/88549867