#c #directory
#c #каталог
Вопрос:
Я пытаюсь создать папку, если она не существует. Я использую 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(), amp;status );
if ( status.st_mode amp; S_IFDIR )
{
cout << "The directory exists." << endl;
}
else
{
cout << "The path you entered is a file." << endl;
}
}
else
{
cout << "Path doesn't exist." << endl;
}
Комментарии:
1. Серьезно? В вашем первоначальном вопросе не было фрагмента кода, и этот код не отражает вопрос. Это было больше похоже на «Что не так с моим кодом [который я не опубликовал]?»
2. Вы должны опубликовать правку в качестве ответа и принять ее.
3. Это не позволило мне опубликовать это в качестве ответа или комментария.
4.
#include <sys/io.h>
не#include <io.h>
, верно?
Ответ №1:
Вызов, совместимый с POSIX, является mkdir
. Это автоматически завершается ошибкой, когда каталог уже существует.
Если вы используете Windows API, то CreateDirectory
более подходит.
Ответ №2:
Используйте boost::filesystem::exists
, чтобы проверить, существует ли файл.
Ответ №3:
boost::filesystem::create_directories
делает именно это: указывает путь, и он создаст все отсутствующие каталоги по этому пути.
Комментарии:
1. Поиск в Google для
boost check directory exists then create C
привел меня сюда в качестве первого результата поиска. Спасибо. 1.