Как сохранить файл в возможно новый каталог? - PullRequest
3 голосов
/ 06 августа 2011

Итак, у меня есть база boost::filesystem::path Base Я хочу создать папку, если она не существует, и создать двоичный файл из строки. В настоящее время у меня есть такая функция:

void file_service::save_string_into_file( std::string contents, std::string name )
{
    std::ofstream datFile;
    name = "./basePath/extraPath/" + name;
    datFile.open(name.c_str(), std::ofstream::binary | std::ofstream::trunc | std::ofstream::out    );
    datFile.write(contents.c_str(), contents.length());
    datFile.close();
}

Требуется из каталогов для существования. Поэтому мне интересно, как обновить мою функцию до API-интерфейсов boost.filesystem, чтобы достичь желаемой функциональности?

Ответы [ 2 ]

6 голосов
/ 06 августа 2011

Обратите внимание, что для использования библиотеки boost :: filesystem вам нужно будет связать предварительно скомпилированную статическую библиотеку boost :: filesystem и статическую библиотеку boost :: system.

#include "boost/filesystem.hpp"

boost::filesystem::path rootPath ( "./basePath/extraPath/" );
boost::system::error_code returnedError;

boost::filesystem::create_directories( rootPath, returnedError );

if ( returnedError )
   //did not successfully create directories
else
   //directories successfully created
4 голосов
/ 06 августа 2011

В boost::filesystem есть удобная функция create_directories. Он рекурсивно создает каталоги, поэтому вам не нужно самостоятельно проходить новый путь.

Это в <boost/filesystem/convenience.hpp>.

...