Namespaces
Variants

Filesystem library (since C++17)

From cppreference.net

Filesystemライブラリは、パス、通常ファイル、ディレクトリなどのファイルシステムとその構成要素に対する操作を実行するための機能を提供します。

ファイルシステムライブラリは元々 boost.filesystem として開発され、 ISO/IEC TS 18822:2015技術仕様 として公開された後、最終的にC++17でISO C++に統合されました。現在、boost実装はC++17ライブラリよりも多くのコンパイラとプラットフォームで利用可能です。

ファイルシステムライブラリの機能は、実装が階層型ファイルシステムにアクセスできない場合、または必要な機能を提供しない場合、利用できない可能性があります。一部の機能は、基盤となるファイルシステムでサポートされていない場合、利用できないことがあります(例:FATファイルシステムはシンボリックリンクを欠如し、複数のハードリンクを禁止しています)。これらの場合、エラーが報告されなければなりません。

このライブラリ内の関数呼び出しが ファイルシステム競合 を引き起こす場合、つまり複数のスレッド、プロセス、またはコンピューターがファイルシステム内の同一オブジェクトへのアクセスと変更をインターリーブする場合、その動作は undefined です。

目次

ライブラリ全体の定義

  • file : ファイルシステムオブジェクトで、データを保持し、書き込み、読み取り、またはその両方が可能です。ファイルには名前と属性があり、その一つがファイルタイプです:
  • ディレクトリ : ディレクトリエントリのコンテナとして機能するファイル。ディレクトリエントリは他のファイル(一部は他のネストされたディレクトリである可能性がある)を識別する。特定のファイルについて議論する際、そのファイルがエントリとして存在するディレクトリを 親ディレクトリ と呼ぶ。親ディレクトリは相対パス名 ".." で表される。
  • 通常ファイル : 名前を既存のファイル(すなわち ハードリンク )に関連付けるディレクトリエントリ。複数のハードリンクがサポートされている場合、ファイルは最後のハードリンクが削除された後に削除される。
  • シンボリックリンク : 名前をパスに関連付けるディレクトリエントリ。パスは存在する場合としない場合がある。
  • その他の特殊ファイルタイプ: ブロック キャラクタ FIFO ソケット
  • ファイル名 : ファイルを命名する文字列。使用可能な文字、大文字小文字の区別、最大長、および許可されない名前は実装定義である。名前 "." (ドット) および ".." (ドットドット) はライブラリレベルで特別な意味を持つ。
  • パス : ファイルを識別する要素のシーケンス。オプションの root-name (例: Windowsにおける "C:" または "//server" ) で始まり、続いてオプションの root-directory (例: Unixにおける "/" )、その後に0個以上のファイル名のシーケンスが続く(最後以外はすべてディレクトリまたはディレクトリへのリンクでなければならない)。パスの文字列表現( pathname )のネイティブ形式(例: 区切り文字として使用される文字)と文字エンコーディングは実装定義であるが、このライブラリは移植性のあるパス表現を提供する。
  • 絶対パス : ファイルの位置を明確に特定するパス。
  • 正規パス : シンボリックリンク、 "." または ".." 要素を含まない絶対パス。
  • 相対パス : ファイルシステム上の特定の位置を基準としてファイルの位置を特定するパス。特別なパス名 "." (ドット、「現在のディレクトリ」)および ".." (ドットドット、「親ディレクトリ」)は相対パスである。

クラス

ヘッダーで定義 <filesystem>
名前空間 std::filesystem で定義
(C++17)
パスを表す
(クラス)
ファイルシステムエラー時に送出される例外
(クラス)
ディレクトリエントリ
(クラス)
ディレクトリの内容に対するイテレータ
(クラス)
ディレクトリとそのサブディレクトリの内容に対するイテレータ
(クラス)
ファイルタイプとパーミッションを表す
(クラス)
(C++17)
ファイルシステムの空き領域と利用可能な領域に関する情報
(クラス)
(C++17)
ファイルの型
(列挙型)
(C++17)
ファイルシステムのパーミッションを識別する
(列挙型)
パーミッション操作のセマンティクスを指定する
(列挙型)
コピー操作のセマンティクスを指定する
(列挙型)
ディレクトリ内容を反復処理するためのオプション
(列挙型)
ファイルの時間値を表す
(typedef)

非メンバー関数

ヘッダーで定義 <filesystem>
名前空間 std::filesystem で定義
(C++17)
絶対パスを構成する
(関数)
正規パスを構成する
(関数)
相対パスを構成する
(関数)
(C++17)
ファイルまたはディレクトリをコピーする
(関数)
(C++17)
ファイル内容をコピー
(関数)
シンボリックリンクをコピーする
(関数)
新しいディレクトリを作成する
(関数)
ハードリンクを作成する
(関数)
シンボリックリンクを作成する
(関数)
現在の作業ディレクトリを返すまたは設定する
(関数)
(C++17)
パスが既存のファイルシステムオブジェクトを参照しているかどうかをチェックします
(関数)
(C++17)
2つのパスが同じファイルシステムオブジェクトを参照しているかどうかをチェックします
(関数)
(C++17)
ファイルのサイズを返す
(関数)
指定されたファイルを参照するハードリンクの数を返す
(関数)
最終データ更新時刻の取得または設定
(関数)
ファイルアクセス権限を変更する
(関数)
シンボリックリンクのターゲットを取得する
(関数)
(C++17) (C++17)
ファイルまたは空のディレクトリを削除
ファイルまたはディレクトリとそのすべての内容を再帰的に削除
(関数)
(C++17)
ファイルまたはディレクトリを移動または名前変更する
(関数)
通常ファイルのサイズを切り詰めまたはゼロ埋めによって変更する
(関数)
(C++17)
ファイルシステム上の利用可能な空き容量を判定する
(関数)
(C++17) (C++17)
ファイル属性を決定する
シンボリックリンクのターゲットをチェックしてファイル属性を決定する
(function)
一時ファイルに適したディレクトリを返す
(関数)
ファイルタイプ
指定されたパスがブロックデバイスを参照しているかどうかをチェックする
(関数)
指定されたパスがキャラクターデバイスを参照しているかどうかをチェックする
(関数)
指定されたパスがディレクトリを参照しているかどうかをチェックします
(関数)
(C++17)
指定されたパスが空のファイルまたはディレクトリを参照しているかどうかをチェックする
(関数)
(C++17)
指定されたパスが名前付きパイプを参照しているかどうかをチェックします
(関数)
(C++17)
引数が other ファイルを参照しているかどうかをチェックする
(function)
引数が通常ファイルを参照しているかどうかをチェックする
(関数)
(C++17)
引数が名前付きIPCソケットを参照しているかどうかをチェックする
(関数)
(C++17)
引数がシンボリックリンクを参照しているかどうかをチェックする
(関数)
ファイルステータスが既知かどうかをチェックする
(関数)

注記

このライブラリを使用するには追加のコンパイラ/リンカオプションが必要な場合があります。GNU実装では9.1より前のバージョンでは -lstdc++fs とのリンクが必要であり、LLVM実装ではLLVM 9.0より前のバージョンでは -lc++fs とのリンクが必要です。

機能テスト マクロ 標準 機能
__cpp_lib_filesystem 201703L (C++17) ファイルシステムライブラリ

関連項目

C++ documentation for File System TS
日本語訳:
C++ documentation File System TS
変更点: - "for" → "の" (所有・関連を示す助詞) - HTMLタグ、属性、C++固有用語("C++ documentation", "File System TS")は翻訳せず保持 - 元のフォーマットと構造を完全に維持