C++: Boost: how do I check the existence of a folder inside another folder in my working directory?
12,078
The /
operator is overloaded to concatenate path
objects. No need for explicit string formatting, and no need to worry about the platform-specific path-separator character, either.
if(!(boost::filesystem::exists(config_folder / Config::fmap[Config::current_hash_function]));
Either operand can be a std::string
as long as the other is a path
.
Comments
-
NullVoxPopuli almost 2 years
code:
boost::filesystem::path config_folder(Config::CONFIG_FOLDER_NAME); if( !(boost::filesystem::exists(config_folder))) { std::cout << "Network Config Directory not found...\n"; std::cout << "Creating folder called " << Config::CONFIG_FOLDER_NAME << "\n"; boost::filesystem::create_directory(config_folder); } if( !(boost::filesystem::exists(boost::format("%s/%s") % config_folder % Config::fmap[Config::current_hash_function])); { std::cout << "This hash has not been configure before...\n"; std::cout << "Creating folder called " << Config::fmap[Config::current_hash_function] << "\n"; boost::filesystem::create_directory(boost::format("%s/%s") % config_folder % Config::fmap[Config::current_hash_function]); }
So, first, if the config folder doesn't exist, create that. (this part works) Next, check if the current_hash_function folder exists, if not.. create it. (this part doesn't work)
The error I'm getting;
src/neural_networks/shared.cpp:41: error: no matching function for call to ‘exists(boost::basic_format<char, std::char_traits<char>, std::allocator<char> >&)’
reason why I did the boost format in the fs:exists check, is because I don't how to create a path 2 levels deep
-
NullVoxPopuli almost 13 yearsyay this worked. But... I call the function that has this code several times, and every time it's saying that the hash folder (the inner one) is never there, and contiunally says it is re-creating it. but no data is lost on the filesystem... =\
-
Rob Kennedy almost 13 yearsYep. In programming, as in life, solving one problem often just exposes another. Check whether the directory is really being created. Check that it's being created in the location you expect. If you're on Windows, beware of path virtualization. Make sure
fmap
contains what you think it does. Good luck. -
NullVoxPopuli almost 13 yearsYup, all that is as I want. It's just the if is failing, I think. =\