Как узнать, существует ли папка и как создать папку?

#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.