2016-03-14 5 views
0

Что может быть лучшим способом создать новый файл на C++ в заданном пути, если я не могу предположить, что каталоги, ведущие к этому пути, еще не найдены.Лучший способ создать файл в не существующем каталоге

Например, я хотел создать файл I:\Documents\Directory\SubDir\SubSubDir\MyFile.txt, но каталогов SubDir и SubSubDir еще нет. Поэтому я должен их заранее создать.

Для этого мне позволено использовать библиотеку boost::filesystem. Поддерживает ли boost :: filesystem такие функции?

Редактировать

После прочтения повышение :: документации файловой системы я нашел относительно простой ответ на мой вопрос.

#include <boost/filesystem.hpp> 
#include <iostream> 

int main(int argc, char** args) { 
    try { 
     boost::filesystem::path dirPath("I:\\Documents\\Directory\\SubDir\\SubSubDir\\MyFile.txt"); 
     boost::filesystem::create_directories(dirPath.parent_path()); 
    } 
    catch(const boost::filesystem::filesystem_error& err) { 
     std::cerr << err.what() << std::endl; 
    } 
} 

ответ

4

Это все в the documentation.

Вы можете безопасно всегда использование create_directory и/или create_directories:

провал Создание потому p [путь] решает в существующий каталог не должен рассматриваться как ошибка.

+0

Большое спасибо. Как я могу извлечь часть каталога для заданного пути? В моем случае 'I: \ Documents \ Directory \ SubDir \ SubSubDir \' – Aleph0

+2

... и это также находится в [документации] (http://www.boost.org/doc/libs/1_60_0/libs/ файловая система/DOC/reference.html # путь-разложение). Я не вижу отношения с вашим текущим вопросом, может быть, вам стоит попросить новый. Обязательно сначала прочтите документацию (возможно, это приведет к тому, что ваш вопрос будет опущен). – usr2564301

+0

Вы правы. Прошу прощения за этот плохой вопрос. – Aleph0