0
点赞
收藏
分享

微信扫一扫

循环创建目录与子目录

void RecursiveDirectory(std::wstring wstrDir)
{
if (wstrDir.length() <= 3)//是根目录,无需创建目录
{
return;
}
if (wstrDir[wstrDir.length() - 1] == L'\\')
{
wstrDir.erase(wstrDir.end() - 1);
}
// 修改文件属性
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(wstrDir.c_str(), &wfd); // 查找
if (hFind != INVALID_HANDLE_VALUE)
{
FindClose(hFind);
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
return;
}
// 创建当前目录的地目录失败
if (CreateDirectory(wstrDir.c_str(), NULL) == false)
{
// 退到上一级目录
std::wstring wstrNewDir = wstrDir;
while (wstrNewDir[wstrNewDir.length() - 1] != L'\\') // 撤到当前目录的上一个目录
{
wstrNewDir.erase(wstrNewDir.length() - 1);
}
// delete '\'
wstrNewDir.erase(wstrNewDir.length() - 1); // delete '\' // 递归进入
RecursiveDirectory(wstrNewDir); // 递归本函数,再创建目录
// 递归退出后创建之前失败的目录
CreateDirectory(wstrDir.c_str(), NULL); // 递归返回,在存在的目录上再建目录
}
// 多级目录创建成功
}

举报

相关推荐

0 条评论