Ответ 1
. POSIX-совместимый вызов mkdir
. Он бесшумно выходит из строя, когда каталог уже существует.
Если вы используете Windows API, более подходящим является CreateDirectory
.
Я пытаюсь создать папку, если она не существует. Я использую Windows, и меня не интересует мой код, работающий на других платформах.
Ничего, я нашел решение. У меня была проблема включения. Ответ:
#include <io.h> // For access().
#include <sys/types.h> // For stat().
#include <sys/stat.h> // For stat().
#include <iostream>
#include <string>
using namespace std;
string strPath;
cout << "Enter directory to check: ";
cin >> strPath;
if ( access( strPath.c_str(), 0 ) == 0 )
{
struct stat status;
stat( strPath.c_str(), &status );
if ( status.st_mode & S_IFDIR )
{
cout << "The directory exists." << endl;
}
else
{
cout << "The path you entered is a file." << endl;
}
}
else
{
cout << "Path doesn't exist." << endl;
}
. POSIX-совместимый вызов mkdir
. Он бесшумно выходит из строя, когда каталог уже существует.
Если вы используете Windows API, более подходящим является CreateDirectory
.
Используйте boost::filesystem::exists
, чтобы проверить, существует ли файл.
boost::filesystem::create_directories
делает именно это: дайте ему путь, и он создаст все недостающие каталоги в этом пути.