ファイルシステムライブラリ
提供: cppreference.com
< cpp
ファイルシステムライブラリはファイルシステムおよびそのコンポーネント (パス、ファイル、ディレクトリなど) の操作を行う機能を提供します。
ファイルシステムライブラリは元々 boost.filesystem として開発され、 技術仕様書 ISO/IEC TS 18822:2015 として発行され、最終的に C++17 で ISO C++ にマージされました。 boost の実装は現在 C++17 ライブラリよりも広範なコンパイラおよびプラットフォームで利用可能です。
処理系が階層型ファイルシステムにアクセスできない場合や、必要な能力を提供できない場合、ファイルシステムライブラリは利用できません。 ベースとなるファイルシステムがいくつかの機能をサポートしていない場合、その機能は利用できません (例えば FAT ファイルシステムにはシンボリックリンクがありませんし、複数のハードリンクを作ることもできません)。 この場合はエラーが報告されなければなりません。
このライブラリ内の関数を呼び出してファイルシステム競合、つまり複数のスレッド、プロセスあるいはコンピュータが、あるファイルシステム内の同じオブジェクトに対するアクセスと変更をインターリーブした場合、動作は未定義です。
目次 |
[編集]ライブラリ全体に渡る定義
- ファイル: データを保持し、書き込んだり、読み込んだりできるファイルシステムオブジェクト。 ファイルは名前、属性およびいずれかのファイル種別を持ちます。 ファイル種別には以下のようなものがあります。
- ディレクトリ: ディレクトリエントリのコンテナとして振る舞うファイル。 ディレクトリエントリは他のファイルを特定します (そのファイルがネストした他のディレクトリである場合もあります)。 あるディレクトリ内のエントリとしてあるファイルが現れるとき、そのディレクトリはそのファイルの親ディレクトリです。 親ディレクトリは相対パス名 ".." で表すことができます。
- ハードリンク: 既存のファイルに名前を紐付けるディレクトリエントリ。 複数のハードリンクがサポートされている場合、ファイルは、そのファイルへの最後のハードリンクが削除された後に、削除されます。
- シンボリックリンク: パスに名前を紐付けるディレクトリエントリ。 そのパスは存在するかもしれませんし、存在しないかもしれません。
- 普通のファイル: 他のファイル種別のいずれでもないファイル。
- ファイル名: ファイルを名付ける文字列。 使用可能な文字、大文字小文字の区別の有無、最大長、使用できない名前は処理系定義です。 名前 "." (ドット) および ".." (ドット-ドット) はライブラリレベルで特別な意味を持ちます。
- パス: ファイルを指定する要素の並び。 オプションの ルート名 (Windows の "C:" や "//server")、オプションの ルートディレクトリ (Unix の "/" など) に0個以上のファイル名 (最後を除いてディレクトリまたはディレクトリへのリンクでなければなりません) が続いたものです。 パスを表す文字列 (パス名) のネイティブな形式 (区切りとして使用される文字など) や文字エンコーディングは処理系定義です。 このライブラリは移植性のあるパスの表現を提供します。
- 絶対パス: ファイルの位置を曖昧性なく指定するパス。
- 正規パス: シンボリックリンク、 "."、 ".." の要素を含まない絶対パス。
- 相対パス: ファイルシステム上の何らかの位置から相対的にファイル位置を指定するパス。 特別なパス名 "." (ドット、「カレントディレクトリ」) および ".." (ドット-ドット、「親ディレクトリ」) は相対パスです。
[編集]クラス
ヘッダ <filesystem> で定義 | |
名前空間 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) | ファイルの時刻の値を表します (typedef) |
[編集]非メンバ関数
(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) | ファイルの状態が判明しているかどうか調べます (関数) |
[編集]ノート
このライブラリの使用は追加のコンパイラ/リンカオプションを必要とする場合があります。 GNU 処理系では -lstdc++fs を使用してリンクする必要があり、 LLVM 処理系では -lc++fs を使用してリンクする必要があります。
[編集]関連項目
File System TS の C++リファレンス |