C++ 根据文件路径自动递归创建所需目录
在编码过程中经常需要根据路径创建目录的场景,此处实现了一个根据文件路径递归创建所需目录的方法。
注意:以下方法为windows
下的实现,在linux
下使用时,将mkdir_nested(char*)
方法中的 _access
替换为access
, _mkdir
替换为mkdir
即可
// 嵌套创建目录
unsigned char mkdir_nested(char* filepath)
{
char file[512];
int fileindex, filelen;
if (NULL == filepath)return 1;
filelen = strlen(filepath);
if (filelen >= 512)return 2;
memset(file, 0, 512);
for (fileindex = 0; fileindex < filelen; fileindex++) {
if ((0x5c == *(filepath + fileindex)) || (0x2f == *(filepath + fileindex))) {
if (_access(file, 0)) {
_mkdir(file);
}
file[fileindex] = *(filepath + fileindex);
}
else {
file[fileindex] = *(filepath + fileindex);
}
}
if (_access(file, 0)) {
_mkdir(file);
}
return 0;
}
// 根据文件路径创建所需目录
void create_dir_by_filepath(char* file)
{
char file_path[MAX_PATH] = { 0 };
char* backslash = strrchr((char*)f, '/');
if (backslash <= 0) {
backslash = strrchr((char*)f, '\\');
}
if (backslash > 0) {
memcpy_s(file_path, sizeof(file_path), f, (backslash - f));
mkdir_nested(file_path);
}
}