所以,我希望chdir能够进入一个目录,如果它存在,如果不是该目录。如果我已经在目录中,我就不需要做任何事情了。
实施例
if (cur_dir == "dir_name")
// do stuff
else if ("dir_name" not exist?)
mkdir "dir_name"
chdir "dir_name"
else
chdir "dir_name"
我一直在谷歌上搜索,到目前为止我已经想到了这个:
if (chdir(Config::CONFIG_FOLDER_NAME) == 0)
{
std::cout << "Network Config Directory not found...\n";
std::cout << "Creating folder called " << Config::CONFIG_FOLDER_NAME << "\n";
mkdir(Config::CONFIG_FOLDER_NAME, 0777);
}
我还没有找到检查当前目录是什么的方法..(不是完整路径,这是我找到的。)
答案 0 :(得分:3)
如果你有Boost,你可以使用Boost.Filesystem:
namespace fs = boost::filesystem;
fs::path configFolder(Config::CONFIG_FOLDER_NAME);
// Check if the current directory isn't already config folder
if (!fs::equivalent(configFolder, fs::current_path())
{
// Create config folder if it doesn't exist
if (!fs::exists(configFolder))
fs::create_directory(configFolder);
// Change working directory to config folder
fs::current_path(configFolder);
}
顺便说一下,如果您只是计划阅读配置文件,则不需要更改工作目录。只需使用绝对路径直接读取即可。在Boost.Filesystem中,你可以这样做:
fs::path configFilePath = configFolder;
configFilePath /= "config.file";
// read configFilePath
答案 1 :(得分:0)
如果你有完整的路径,那么只需解析它并查看最后一段(最后一段“/").
答案 2 :(得分:0)
我认为getcwd()就是您所需要的。