如何将文件保存到可能的新目录中?

时间:2011-08-06 16:53:55

标签: c++ file boost save boost-filesystem

所以我有一些基础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();
}

它要求从目录中存在。所以我想知道如何将我的函数更新为boost.filesystem API以实现所需的功能?

2 个答案:

答案 0 :(得分:6)

请注意,为了使用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

答案 1 :(得分:4)

boost::filesystem中有create_directories便利功能。它以递归方式创建目录,因此您不必自己遍历可能的新路径。

它在<boost/filesystem/convenience.hpp>