Namespaces
Variants
Actions

std::filesystem::is_empty

From cppreference.com
 
 
 
Defined in header <filesystem>
bool is_empty(conststd::filesystem::path& p );
(1) (since C++17)
bool is_empty(conststd::filesystem::path& p, std::error_code& ec );
(2) (since C++17)

Checks whether the given path refers to an empty file or directory.

Contents

[edit]Parameters

p - path to examine
ec - error code to modify in case of error

[edit]Return value

true if the path indicated by p refers to an empty file or directory, false otherwise. The non-throwing overload returns false if an error occurs.

[edit]Exceptions

Any overload not marked noexcept may throw std::bad_alloc if memory allocation fails.

1) Throws std::filesystem::filesystem_error on underlying OS API errors, constructed with p as the first path argument and the OS error code as the error code argument.
2) Sets a std::error_code& parameter to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur.

[edit]Example

#include <cstdio>#include <filesystem>#include <fstream>#include <iostream>   int main(){namespace fs = std::filesystem;   const fs::path tmp_dir{fs::temp_directory_path()};std::cout<<std::boolalpha<<"Temp dir: "<< tmp_dir <<'\n'<<"is_empty(): "<< fs::is_empty(tmp_dir)<<'\n';   const fs::path tmp_name{tmp_dir /std::tmpnam(nullptr)};std::cout<<"Temp file: "<< tmp_name <<'\n';   std::ofstream file{tmp_name.string()};std::cout<<"is_empty(): "<< fs::is_empty(tmp_name)<<'\n'; file <<"cppreference.com"; file.flush();std::cout<<"is_empty(): "<< fs::is_empty(tmp_name)<<'\n'<<"file_size(): "<< fs::file_size(tmp_name)<<'\n'; file.close(); fs::remove(tmp_name);}

Possible output:

Temp dir: "/tmp" is_empty(): false Temp file: "/tmp/fileCqd9DM" is_empty(): true is_empty(): false file_size(): 16

[edit]Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 3013C++17 error_code overload marked noexcept but can allocate memory noexcept removed

[edit]See also

(C++17)(C++17)
determines file attributes
determines file attributes, checking the symlink target
(function)[edit]
(C++17)
checks whether path refers to existing file system object
(function)[edit]
close