directory_entry クラス

directory_iteratorまたはrecursive_directory_iteratorを逆参照することによって返されるオブジェクトについて説明します。 directory_entryはpathをラップし、最適化として、ディレクトリの反復処理中に取得されたファイル属性をキャッシュできます。

構文

class directory_entry;

解説

directory_entry オブジェクトには、pathが格納されます。 最適化として、パスが参照するファイルの属性と状態をキャッシュすることもできます。 キャッシュされたデータは、エントリがディレクトリ反復子によって作成されたとき、または refreshを呼び出すときに設定されます。 file_size、last_write_time、status、さまざまなis_*述語などのオブザーバーは、使用可能な場合はキャッシュされたデータを返します。それ以外の場合は、ファイル システムに対してクエリを実行します。

詳細およびコード例については、「ファイル システムのナビゲーション (C++)」をご覧ください。

コンストラクター

コンストラクター 説明
directory_entry directory_entry を構築します。

メンバー関数

メンバー関数 説明
assign 格納されているパスを置き換え、キャッシュされた属性を更新します。
exists エントリが既存のファイルを参照しているかどうかを確認します。
file_size 参照先ファイルのサイズ (バイト単位) を取得します。
hard_link_count 参照先ファイルへのハード リンクの数を取得します。
is_block_file 参照されるファイルがブロック特殊ファイルであるかどうかを確認します。
is_character_file 参照されるファイルが文字特殊ファイルであるかどうかを確認します。
is_directory 参照されるファイルがディレクトリであるかどうかを確認します。
is_fifo 参照先ファイルが名前付きパイプ (FIFO) であるかどうかを確認します。
is_other 参照先のファイルが他のファイルであるかどうかを確認します。
is_regular_file 参照先のファイルが通常のファイルであるかどうかを確認します。
is_socket 参照されるファイルがソケットであるかどうかを確認します。
is_symlink 参照されるファイルがシンボリック リンクであるかどうかを確認します。
last_write_time 参照先ファイルの最後のデータ変更時刻を取得します。
path 格納されているパスを返します。
refresh キャッシュされたファイル属性を更新します。
replace_filename 格納されているパスのファイル名を置き換え、キャッシュされた属性を更新します。
status シンボリック リンクに従って、参照されるファイルの状態を取得します。
symlink_status シンボリック リンクをフォローせずに、参照先ファイルの状態を取得します。

演算子

演算子 説明
operator= directory_entryに割り当てます。
operator const path& 格納されているパスを返します。
operator== 2 つの directory_entry オブジェクトが等しいかどうかを確認します。
operator<=> 2 つの directory_entry オブジェクトの 3 方向比較を実行します。 (C++20)
operator!= 2 つの directory_entry オブジェクトが等しくないかどうかを確認します。 C++17 の明示的なメンバー。は、C++20 以降で書き換えられた比較によってサポートされています。
operator< directory_entryが別のdirectory_entryの前に並べ替えられるかどうかを確認します。 C++17 の明示的なメンバー。は、C++20 以降で書き換えられた比較によってサポートされています。
operator<= directory_entryが別のdirectory_entryの前または等しいかどうかを確認します。 C++17 の明示的なメンバー。は、C++20 以降で書き換えられた比較によってサポートされています。
operator> directory_entryが別のdirectory_entryの後に並べ替えられるかどうかを確認します。 C++17 の明示的なメンバー。は、C++20 以降で書き換えられた比較によってサポートされています。
operator>= directory_entryが別のdirectory_entryの後または等しいかどうかを確認します。 C++17 の明示的なメンバー。は、C++20 以降で書き換えられた比較によってサポートされています。

要件

ヘッダー: <filesystem>

名前 空間:std::filesystem

directory_entry

directory_entry を構築します。

directory_entry() noexcept = default;
directory_entry(const directory_entry&) = default;
directory_entry(directory_entry&&) noexcept = default;

explicit directory_entry(const std::filesystem::path& p);
directory_entry(const std::filesystem::path& p, std::error_code& ec);

~directory_entry();

パラメーター

P
エントリが参照するファイルへのパス。

ec
操作の出力エラー コード。

解説

既定のコンストラクター、コピー コンストラクター、および移動コンストラクターは、想定どおりに動作します。 pathを受け取るコンストラクターは p を格納し、refreshを呼び出してキャッシュされた属性を設定します。 error_codeを受け取るオーバーロードは、スローする代わりに ec でエラーを報告し、更新が失敗した場合は格納されたパスをクリアします。

operator=

directory_entryに割り当てます。

directory_entry& operator=(const directory_entry&) = default;
directory_entry& operator=(directory_entry&&) noexcept = default;

パラメーター

right
このdirectory_entryにコピーまたは移動するdirectory_entry。

解説

既定の代入演算子は期待どおりに動作します。

割り当て

格納されているパスを置き換え、キャッシュされた属性を更新します。

void assign(const std::filesystem::path& p);
void assign(const std::filesystem::path& p, std::error_code& ec);

パラメーター

P
格納する新しいパス。

ec
操作の出力エラー コード。

解説

格納されているパスを p に置き換え、 refresh を呼び出してキャッシュされた属性を更新します。 error_codeを受け取るオーバーロードは、スローする代わりに ec でエラーを報告します。

replace_filename

格納されているパスのファイル名を置き換え、キャッシュされた属性を更新します。

void replace_filename(const std::filesystem::path& p);
void replace_filename(const std::filesystem::path& p, std::error_code& ec);

パラメーター

P
置換ファイル名。

ec
操作の出力エラー コード。

解説

格納されているパスのファイル名コンポーネントを p に置き換えます。 path().replace_filename(p)の場合と同様に、 refreshを呼び出します。 error_codeを受け取るオーバーロードは、スローする代わりに ec でエラーを報告します。

更新する

キャッシュされたファイル属性を更新します。

void refresh();
void refresh(std::error_code& ec) noexcept;

パラメーター

ec
操作の出力エラー コード。

解説

格納されているパスが参照するファイルの属性を読み取り、 directory_entryにキャッシュします。 refreshを呼び出して、参照されるファイルの変更後にキャッシュされたデータを更新します。 error_codeを受け取るオーバーロードは、スローする代わりに ec でエラーを報告します。

パス

格納されているパスを返します。

const std::filesystem::path& path() const noexcept;

operator const path&

格納されているパスを返します。

operator const std::filesystem::path&() const noexcept;

存在する

エントリが既存のファイルを参照しているかどうかを確認します。

bool exists() const;
bool exists(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 保存されたパスが既存のファイルを参照している場合。それ以外の場合は false。 filesystem::exists(status())を呼び出すことと同じです。

is_block_file

参照されるファイルがブロック特殊ファイルであるかどうかを確認します。

bool is_block_file() const;
bool is_block_file(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルがブロック特殊ファイルの場合。それ以外の場合は false。 この関数は、常にWindowsのfalseを返します。

is_character_file

参照されるファイルが文字特殊ファイルであるかどうかを確認します。

bool is_character_file() const;
bool is_character_file(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルが文字特殊ファイルの場合。それ以外の場合は false。 この関数は、常にWindowsのfalseを返します。

is_directory

参照されるファイルがディレクトリであるかどうかを確認します。

bool is_directory() const;
bool is_directory(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルがディレクトリの場合。それ以外の場合は false。 filesystem::is_directory(status())を呼び出すことと同じです。

is_fifo

参照先ファイルが名前付きパイプ (FIFO) であるかどうかを確認します。

bool is_fifo() const;
bool is_fifo(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルが FIFO の場合は。それ以外の場合は false。 この関数は、常にWindowsのfalseを返します。

is_other

参照先のファイルが他のファイルであるかどうかを確認します。

bool is_other() const;
bool is_other(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルが存在するが、通常のファイル、ディレクトリ、またはシンボリック リンクではない場合。それ以外の場合は false。 filesystem::is_other(status())を呼び出すことと同じです。

is_regular_file

参照先のファイルが通常のファイルであるかどうかを確認します。

bool is_regular_file() const;
bool is_regular_file(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルが通常のファイルの場合。それ以外の場合は false。 filesystem::is_regular_file(status())を呼び出すことと同じです。

is_socket

参照されるファイルがソケットであるかどうかを確認します。

bool is_socket() const;
bool is_socket(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルがソケットの場合。それ以外の場合は false。 この関数は、常にWindowsのfalseを返します。

参照されるファイルがシンボリック リンクであるかどうかを確認します。

bool is_symlink() const;
bool is_symlink(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

true 参照されるファイルがシンボリック リンクの場合。それ以外の場合は false。 filesystem::is_symlink(symlink_status())を呼び出すことと同じです。

ファイルサイズ

参照先ファイルのサイズ (バイト単位) を取得します。

uintmax_t file_size() const;
uintmax_t file_size(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

参照先ファイルのサイズ (バイト単位) ( filesystem::file_size(path())の場合と同様)。 キャッシュされたデータが使用可能な場合に使用します。

参照先ファイルへのハード リンクの数を取得します。

uintmax_t hard_link_count() const;
uintmax_t hard_link_count(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

参照先ファイルへのハード リンクの数 ( filesystem::hard_link_count(path())の場合と同様)。 キャッシュされたデータが使用可能な場合に使用します。

last_write_time

参照先ファイルの最後のデータ変更時刻を取得します。

file_time_type last_write_time() const;
file_time_type last_write_time(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

参照先ファイルの最後のデータ変更時刻 ( filesystem::last_write_time(path())の場合と同様)。 キャッシュされたデータが使用可能な場合に使用します。

状態

シンボリック リンクに従って、参照されるファイルの状態を取得します。

file_status status() const;
file_status status(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

参照先ファイルの状態 ( filesystem::status(path())の場合と同様)。 キャッシュされたデータが使用可能な場合に使用します。

シンボリック リンクをフォローせずに、参照先ファイルの状態を取得します。

file_status symlink_status() const;
file_status symlink_status(std::error_code& ec) const noexcept;

パラメーター

ec
操作の出力エラー コード。

値を返す

参照先ファイルのシンボリック リンクの状態 ( filesystem::symlink_status(path())の場合と同様)。 キャッシュされたデータが使用可能な場合に使用します。

operator==

2 つの directory_entry オブジェクトが等しいかどうかを確認します。

bool operator==(const directory_entry& right) const noexcept;

パラメーター

right
比較対象の directory_entry 。

値を返す

path() == right.path() を返します。

operator<=>

2 つの directory_entry オブジェクトの 3 方向比較を実行します。

std::strong_ordering operator<=>(const directory_entry& right) const noexcept; // C++20

パラメーター

right
比較対象の directory_entry 。

値を返す

path() <=> right.path() を返します。

解説

C++20 以降で使用できます。 コンパイラは、この演算子を使用するために、 operator<、 operator<=、 operator>、または operator>= を使用する比較を書き換えます。 operator==を使用するためにoperator!=を使用する比較を書き換える。

operator!=

2 つの directory_entry オブジェクトが等しくないかどうかを確認します。

bool operator!=(const directory_entry& right) const noexcept; // C++17

パラメーター

right
比較対象の directory_entry 。

値を返す

!(*this == right) を返します。

解説

C++17 では、この演算子は明示的に宣言されたメンバー関数です。 C++20 以降では、 operator!= を使用する式が、 operator==を使用するように書き換えられます。

operator<

directory_entryが別のdirectory_entryの前に並べ替えられるかどうかを確認します。

bool operator<(const directory_entry& right) const noexcept; // C++17

パラメーター

right
比較対象の directory_entry 。

値を返す

path() < right.path() を返します。

解説

C++17 では、この演算子は明示的に宣言されたメンバー関数です。 C++20 以降では、 operator< を使用する式が、 operator<=>を使用するように書き換えられます。

operator<=

directory_entryが別のdirectory_entryの前または等しいかどうかを確認します。

bool operator<=(const directory_entry& right) const noexcept; // C++17

パラメーター

right
比較対象の directory_entry 。

値を返す

!(right < *this) を返します。

解説

C++17 では、この演算子は明示的に宣言されたメンバー関数です。 C++20 以降では、 operator<= を使用する式が、 operator<=>を使用するように書き換えられます。

operator>

directory_entryが別のdirectory_entryの後に並べ替えられるかどうかを確認します。

bool operator>(const directory_entry& right) const noexcept; // C++17

パラメーター

right
比較対象の directory_entry 。

値を返す

right < *this を返します。

解説

C++17 では、この演算子は明示的に宣言されたメンバー関数です。 C++20 以降では、 operator> を使用する式が、 operator<=>を使用するように書き換えられます。

operator>=

directory_entryが別のdirectory_entryの後または等しいかどうかを確認します。

bool operator>=(const directory_entry& right) const noexcept; // C++17

パラメーター

right
比較対象の directory_entry 。

値を返す

!(*this < right) を返します。

解説

C++17 では、この演算子は明示的に宣言されたメンバー関数です。 C++20 以降では、 operator>= を使用する式が、 operator<=>を使用するように書き換えられます。

関連項目

ヘッダー ファイル リファレンス
<filesystem>
ファイル システム ナビゲーション (C++)