CreateDirectoryW 只能生成一个文件夹,如果存在多级文件夹并且之前的文件夹不存在那么就会创建失败
如 目录 1\2\3 本意是创建文件夹3 但是如果 1 2 不存在那么就会 失败
解决方案之一是 通过递归方式来解决
#include<iostream>
#include<fstream>
#include"windows.h"
#include "math.h"
#include<vector>
#include <direct.h>
using namespace std;
LPWSTR toUnicode11(const char* _str)
{
LPWSTR _ret;
int _len = strlen(_str) * 2;
_ret = new WCHAR[_len];
MultiByteToWideChar(CP_ACP, 0, _str, -1, _ret, _len);
return _ret;
}
void CreateDir(string dir)
{
if (CreateDirectoryW(toUnicode11(dir.c_str()), 0) == 0)
{
//error
if(string::npos == dir.find('\\'))return;
int i = dir.size();
for (; i >= 0; i--)
{
if ( dir[i]=='\\' )break;;
}
CreateDir(dir.substr(0,i ));
CreateDirectoryW(toUnicode11(dir.c_str()), 0);
}
}
int main()
{
string path="12\\54\\63\\.324\\4";
CreateDir(path);
return 0;
}
- #include<iostream>
- #include<fstream>
- #include"windows.h"
- #include "math.h"
- #include<vector>
- #include <direct.h>
- using namespace std;
-
- LPWSTR toUnicode11(const char* _str)
- {
- LPWSTR _ret;
- int _len = strlen(_str) * 2;
- _ret = new WCHAR[_len];
- MultiByteToWideChar(CP_ACP, 0, _str, -1, _ret, _len);
- return _ret;
- }
- void CreateDir(string dir)
- {
- if (CreateDirectoryW(toUnicode11(dir.c_str()), 0) == 0)
- {
- //error
- if(string::npos == dir.find('\\'))return;
-
- int i = dir.size();
- for (; i >= 0; i--)
- {
- if ( dir[i]=='\\' )break;;
- }
- CreateDir(dir.substr(0,i ));
- CreateDirectoryW(toUnicode11(dir.c_str()), 0);
- }
- }
- int main()
- {
- string path="12\\54\\63\\.324\\4";
- CreateDir(path);
-
- return 0;
- }
#include<iostream>
#include<fstream>
#include"windows.h"
#include "math.h"
#include<vector>
#include <direct.h>
using namespace std;
LPWSTR toUnicode11(const char* _str)
{
LPWSTR _ret;
int _len = strlen(_str) * 2;
_ret = new WCHAR[_len];
MultiByteToWideChar(CP_ACP, 0, _str, -1, _ret, _len);
return _ret;
}
void CreateDir(string dir)
{
if (CreateDirectoryW(toUnicode11(dir.c_str()), 0) == 0)
{
//error
if(string::npos == dir.find('\\'))return;
int i = dir.size();
for (; i >= 0; i--)
{
if ( dir[i]=='\\' )break;;
}
CreateDir(dir.substr(0,i ));
CreateDirectoryW(toUnicode11(dir.c_str()), 0);
}
}
int main()
{
string path="12\\54\\63\\.324\\4";
CreateDir(path);
return 0;
}