namespace std::filesystem {
bool is_empty(const path& p); // (1)
bool is_empty(const path& p, std::error_code& ec); // (2)
}
概要
指定されたパスが空のファイル・ディレクトリかを確認する。
戻り値
- (1) : (2)でエラーが発生した場合に、
std::filesystem::filesystem_error
例外を送出する - (2) :
- ファイル状態を取得する
- 取得に失敗したらエラーとして、
ec
にエラー情報が書き込まれ、false
が返る
- 取得に失敗したらエラーとして、
- ファイルがディレクトリだった場合は、ディレクトリ状態を取得する
- 取得に失敗したらエラーとして、
ec
にエラー情報が書き込まれ、false
が返る
- 取得に失敗したらエラーとして、
- ディレクトリが空だったら
true
、そうでなければfalse
が返る- 空のサブディレクトリがある場合、空ではないとみなされる
- ファイルがディレクトリでなければ、ファイルサイズを取得する
- 取得に失敗したらエラーとして、
ec
にエラー情報が書き込まれ、false
が返る
- 取得に失敗したらエラーとして、
- ファイルサイズがゼロであれば
true
、そうでなければfalse
が返る
- ファイル状態を取得する
例外
- (1) : ファイルシステムがエラーを報告する場合がある。それに加えて、指定されたファイルの種別が
file_type::none
、file_type::not_found
、file_type::unknown
のいずれかである場合もエラーである。エラーが発生した場合は、std::filesystem::filesystem_error
例外を送出する - (2) : 投げない
例
#include <cassert>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::ofstream{"empty_file"};
fs::create_directory("empty_dir");
// (2)
// パスを指定して、空かを確認。
assert(fs::is_empty("empty_dir"));
assert(fs::is_empty("empty_file"));
// (3)
// エラー情報を例外ではなくerror_codeで受け取る
std::error_code ec;
bool result = fs::is_empty("empty_file", ec);
assert(!ec);
assert(result);
}
24
bool result = fs::is_empty("empty_file", ec);
#include <cassert>
#include <fstream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
std::ofstream{"empty_file"};
fs::create_directory("empty_dir");
// (2)
// パスを指定して、空かを確認。
assert(fs::is_empty("empty_dir"));
assert(fs::is_empty("empty_file"));
// (3)
// エラー情報を例外ではなくerror_codeで受け取る
出力
バージョン
言語
- C++17
処理系
- Clang: 7.0 ✅
- GCC: 8.1 ✅
- Visual C++: