Как узнать, существует ли папка и как ее создать? - PullRequest
15 голосов
/ 11 апреля 2011

Я пытаюсь создать папку, если она не существует. Я использую 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;
   }

Ответы [ 3 ]

13 голосов
/ 11 апреля 2011

Используйте boost::filesystem::exists, чтобы проверить, существует ли файл.

12 голосов
/ 11 апреля 2011

POSIX-совместимый вызов - mkdir. Он молча завершается ошибкой, когда каталог уже существует.

Если вы используете Windows API, то лучше подойдет CreateDirectory.

11 голосов
/ 11 апреля 2011

boost::filesystem::create_directories делает именно это: укажите ему путь, и он создаст все отсутствующие каталоги в этом пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...