Skip to content

Latest commit

 

History

History
74 lines (54 loc) · 2.21 KB

create_directories.md

File metadata and controls

74 lines (54 loc) · 2.21 KB

create_directories

  • filesystem[meta header]
  • std::filesystem[meta namespace]
  • function[meta id-type]
  • cpp17[meta cpp]
namespace std::filesystem {
  bool create_directories(const path& p);                      // (1)
  bool create_directories(const path& p, std::error_code& ec); // (2)
}
  • path[link path.md]

概要

ディレクトリ階層を作成する。

create_directory()関数は、指定されたパスの単一ディレクトリを作成するが、間のディレクトリが存在しない場合はエラーとなる。この関数は、間のディレクトリも作成する。

効果

  • パスpに含まれるディレクトリのうち、存在しないディレクトリを全て作成する

戻り値

  • (1) : 新たなディレクトリが作成されたらtrue、されなければfalseが返る
  • (2) : 新たなディレクトリが作成されたらtrue、されなければfalseが返る。エラーが発生した場合もfalseが返る

例外

  • (1) : ファイルシステムがエラーを報告する場合がある。エラーが発生した場合は、std::filesystem::filesystem_error例外を送出する
  • (2) : ディレクトリを走査する際にメモリ確保に失敗した場合、例外を送出する可能性がある

#include <cassert>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
  bool result = fs::create_directories("a/b/c");

  assert(result);
  assert(fs::exists("a/b/c"));
  assert(fs::is_directory("a/b/c"));

  // すでに存在するディレクトリを指定した場合、falseは返るがエラーにはならない
  bool result2 = fs::create_directories("a/b/c");
  assert(!result2);
}
  • fs::create_directories[color ff0000]
  • fs::exists[link exists.md]
  • fs::is_directory[link is_directory.md]

出力

バージョン

言語

  • C++17

処理系

参照