ファイルシステムライブラリ (C++17以降)
From cppreference.com
< cpp
ファイルシステムライブラリは、ファイルシステムとその構成要素(パス、通常ファイル、ディレクトリなど)に対する操作を行うための機能を提供する。
ファイルシステムライブラリは、元々はboost.filesystemとして開発され、技術仕様 ISO/IEC TS 18822:2015として公開された後、C++17でISO C++にマージされた。boostによる実装は、現在、C++17ライブラリよりも多くのコンパイラやプラットフォームで利用可能である。
実装が階層型ファイルシステムにアクセスできない場合や、必要な機能を提供していない場合には、ファイルシステムライブラリの機能が利用できないことがある。基礎となるファイルシステムがサポートしていない機能は利用できない場合がある(例えば、FATファイルシステムはシンボリックリンクをサポートせず、複数のハードリンクを禁止している)。そのような場合、エラーを報告しなければならない。
このライブラリの関数呼び出しがファイルシステム競合、すなわち、複数のスレッド、プロセス、またはコンピュータがファイルシステム内の同じオブジェクトへのアクセスと変更をインターリーブさせる状況を引き起こした場合の動作は未定義である。
目次 |
[編集] ライブラリ全体の定義
- ファイル (file): データを保持し、書き込み、読み込み、またはその両方が可能なファイルシステムオブジェクト。ファイルは名前と属性を持ち、その属性の1つがファイル種別である。
- ディレクトリ (directory): 他のファイル(その中には他のネストされたディレクトリが含まれる場合もある)を識別するディレクトリエントリのコンテナとして機能するファイル。特定のファイルについて議論する場合、そのファイルがエントリとして現れるディレクトリは、その親ディレクトリである。親ディレクトリは相対パス名".."で表現できる。
- 通常ファイル (regular file): 名前を既存のファイルに関連付けるディレクトリエントリ(すなわちハードリンク)。複数のハードリンクがサポートされている場合、ファイルはそれへの最後のハードリンクが削除された後に削除される。
- シンボリックリンク (symbolic link): 名前をパスに関連付けるディレクトリエントリ。そのパスは存在する場合もあれば、存在しない場合もある。
- その他の特殊なファイル種別: ブロック (block)、キャラクタ (character)、FIFO (fifo)、ソケット (socket)。
- ファイル名 (file name): ファイルに名前を付ける文字列。許可される文字、大文字と小文字の区別、最大長、および許可されない名前は実装定義である。名前"."(ドット)と".."(ドットドット)はライブラリレベルで特別な意味を持つ。
- パス (path): ファイルを識別する要素のシーケンス。オプションのルート名(例: Windowsの"C:"や"//server")で始まり、次にオプションのルートディレクトリ(例: Unixの"/")が続き、その後に0個以上のファイル名のシーケンスが続く(最後のファイル名を除き、すべてがディレクトリまたはディレクトリへのリンクでなければならない)。パスの文字列表現(パス名)のネイティブフォーマット(例: 区切り文字としてどの文字が使われるか)と文字エンコーディングは実装定義であり、このライブラリはパスの移植可能な表現を提供する。
- 絶対パス (absolute path): ファイルの場所を曖昧さなく識別するパス。
- 正規パス (canonical path): シンボリックリンク、"."、または".."要素を含まない絶対パス。
- 相対パス (relative path): ファイルシステム上の何らかの場所を基準にしてファイルの場所を識別するパス。特別なパス名"."(ドット、「カレントディレクトリ」)と".."(ドットドット、「親ディレクトリ」)は相対パスである。
クラス | |
| ヘッダー
<filesystem> で定義 | |
| 名前空間
std::filesystem で定義 | |
| (C++17) |
パスを表現する (クラス) |
| (C++17) |
ファイルシステムエラーでスローされる例外 (クラス) |
| (C++17) |
ディレクトリエントリ (クラス) |
| (C++17) |
ディレクトリの内容を指すイテレータ (クラス) |
| (C++17) |
ディレクトリとそのサブディレクトリの内容を指すイテレータ (クラス) |
| (C++17) |
ファイルの種別とパーミッションを表現する (クラス) |
| (C++17) |
ファイルシステムの空き容量と利用可能容量に関する情報 (クラス) |
| (C++17) |
ファイルの種別 (列挙型) |
| (C++17) |
ファイルシステムのパーミッションを識別する (列挙型) |
| (C++17) |
パーミッション操作のセマンティクスを指定する (列挙型) |
| (C++17) |
コピー操作のセマンティクスを指定する (列挙型) |
| (C++17) |
ディレクトリの内容をイテレートするためのオプション (列挙型) |
| (C++17) |
ファイルの時刻値を表現する (型定義) |
非メンバ関数 | |
| ヘッダー
<filesystem> で定義 | |
| 名前空間
std::filesystem で定義 | |
| (C++17) |
絶対パスを構成する (関数) |
| (C++17) |
正規パスを構成する (関数) |
| (C++17) |
相対パスを構成する (関数) |
| (C++17) |
ファイルまたはディレクトリをコピーする (関数) |
| (C++17) |
ファイルの内容をコピーする (関数) |
| (C++17) |
シンボリックリンクをコピーする (関数) |
| (C++17)(C++17) |
新しいディレクトリを作成する (関数) |
| (C++17) |
ハードリンクを作成する (関数) |
| (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) |
ファイルまたは空のディレクトリを削除する ファイルまたはディレクトリとその内容をすべて再帰的に削除する (関数) |
| (C++17) |
ファイルまたはディレクトリを移動または名前変更する (関数) |
| (C++17) |
通常ファイルのサイズを切り詰めまたはゼロ埋めで変更する (関数) |
| (C++17) |
ファイルシステム上の利用可能な空き容量を決定する (関数) |
| (C++17)(C++17) |
ファイルの属性を決定する シンボリックリンクのターゲットを確認してファイルの属性を決定する (関数) |
| (C++17) |
一時ファイルに適したディレクトリを返す (関数) |
ファイル種別 | |
| (C++17) |
指定されたパスがブロックデバイスを参照しているか確認する (関数) |
| (C++17) |
指定されたパスがキャラクタデバイスを参照しているか確認する (関数) |
| (C++17) |
指定されたパスがディレクトリを参照しているか確認する (関数) |
| (C++17) |
指定されたパスが空のファイルまたはディレクトリを参照しているか確認する (関数) |
| (C++17) |
指定されたパスが名前付きパイプを参照しているか確認する (関数) |
| (C++17) |
引数がその他のファイルを参照しているか確認する (関数) |
| (C++17) |
引数が通常ファイルを参照しているか確認する (関数) |
| (C++17) |
引数が名前付きIPCソケットを参照しているか確認する (関数) |
| (C++17) |
引数がシンボリックリンクを参照しているか確認する (関数) |
| (C++17) |
ファイルステータスが既知かどうかを確認する (関数) |
[編集] 備考
このライブラリを使用するには、追加のコンパイラ/リンカオプションが必要になる場合があります。9.1より前のGNU実装では-lstdc++fsとのリンクが必要で、LLVM 9.0より前のLLVM実装では-lc++fsとのリンクが必要です。
| 機能テストマクロ | 値 | 規格 | 機能 |
|---|---|---|---|
__cpp_lib_filesystem |
201703L |
(C++17) | ファイルシステムライブラリ |
[編集] 関連項目
| C++ドキュメント - File System TS
|