Create a directory if it doesn't exist Create a directory if it doesn't exist windows windows

Create a directory if it doesn't exist


Use the WINAPI CreateDirectory() function to create a folder.

You can use this function without checking if the directory already exists as it will fail but GetLastError() will return ERROR_ALREADY_EXISTS:

if (CreateDirectory(OutputFolder.c_str(), NULL) ||    ERROR_ALREADY_EXISTS == GetLastError()){    // CopyFile(...)}else{     // Failed to create directory.}

The code for constructing the target file is incorrect:

string(OutputFolder+CopiedFile).c_str()

this would produce "D:\testEmploi Nam.docx": there is a missing path separator between the directory and the filename. Example fix:

string(OutputFolder+"\\"+CopiedFile).c_str()


Probably the easiest and most efficient way is to use boost and the boost::filesystem functions. This way you can build a directory simply and ensure that it is platform independent.

const char* path = _filePath.c_str();boost::filesystem::path dir(path);if(boost::filesystem::create_directory(dir)){    std::cerr<< "Directory Created: "<<_filePath<<std::endl;}

boost::filesystem::create_directory - documentation


#include <experimental/filesystem> // or #include <filesystem> for C++17 and up    namespace fs = std::experimental::filesystem;if (!fs::is_directory("src") || !fs::exists("src")) { // Check if src folder exists    fs::create_directory("src"); // create src folder}