概述
- 本文演示環境: win10 + vs2017
頭文件
#include <io.h>
#include <direct.h>
函數
下面的函數,從左至右依次檢查文件夾是否存在,如果不存在,則創建, 直到最后一級目錄
/// --------------------------------------------------------------------------------------------------------
/// @brief: 創建日志存放的文件夾
/// --------------------------------------------------------------------------------------------------------
void log_imp::create_log_path_()
{
#if defined (os_is_win)
std::string str_sub_dir = log_info_.path_;
std::string str_create_dir;
bool is_end = true;
using namespace std;
while (true == is_end)
{
int sub_path_pos = str_sub_dir.find('\\');
if (0 <= sub_path_pos)
{
/// 得到要檢查的目錄
str_create_dir += str_sub_dir.substr(0, sub_path_pos + 1);/// +std::string("\\");
/// 創建目錄
create_dir_(str_create_dir);
/// 繼續找下一級目錄
str_sub_dir = str_sub_dir.substr(sub_path_pos + 1, str_sub_dir.length());
}
/// 說明已經找到了最后一級目錄,
else
{
/// 創建最后一級目錄
str_create_dir += str_sub_dir;
create_dir_(str_create_dir);
is_end = false;
}
}
#elif defined (os_is_linux)
#endif ///
}
create_dir_函數源碼
/// --------------------------------------------------------------------------------------------------------
/// @brief: 創建目錄
/// --------------------------------------------------------------------------------------------------------
void log_imp::create_dir_(const std::string str_create)
{
/// 文件夾不存在則創建文件夾
if (-1 == _access(str_create.c_str(), 0) )
{
_mkdir(str_create.c_str());
}
else
; ///文件夾已經存在
}