CreateDirectory递归创建多级目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CreateDirectory递归创建多级目录相关的知识,希望对你有一定的参考价值。

目的:实现用CreateDirectory创建多级目录

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");//相对路径

以上是关于CreateDirectory递归创建多级目录的主要内容,如果未能解决你的问题,请参考以下文章

fopen创建多级目录下文件的问题

c++创建文件夹,mkdir(),_mkdir(),CreateDirectory()

递归方法绑定多级动态目录

在 C# 中使用 CreateDirectory 避免 NotSupportedException

102)PHP,目录操作

System.IO.Directory.CreateDirectory - 有史以来最奇怪的异常