在非现有目录

时间:2016-03-14 10:47:53

标签: c++ file boost-filesystem

如果我不能假设通往该路径的目录尚不存在,那么在给定路径中用C ++创建新文件的最佳方法是什么呢。

例如,我想创建文件I:\Documents\Directory\SubDir\SubSubDir\MyFile.txt,但目录SubDirSubSubDir尚未存在。因此我必须事先创建它们。

为此,我可以使用库boost::filesystem。 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;
    }
}

1 个答案:

答案 0 :(得分:4)

全部在the documentation

您可以安全始终使用create_directory和/或create_directories

  

创建失败,因为p [路径]解析为现有目录不应视为错误。