Classes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
File types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <filesystem> | ||
bool exists(std::filesystem::file_status s)noexcept; | (1) | (since C++17) |
bool exists(conststd::filesystem::path& p); | (2) | (since C++17) |
bool exists(conststd::filesystem::path& p,std::error_code& ec)noexcept; | (3) | (since C++17) |
Checks if the given file status or path corresponds to an existing file or directory.
Contents |
s | - | file status to check |
p | - | path to examine |
ec | - | out-parameter for error reporting in the non-throwing overload |
true if the given path or file status corresponds to an existing file or directory,false otherwise.
Any overload not markednoexcept
may throwstd::bad_alloc if memory allocation fails.
No filesystem exception is thrown if object does not exist (use return value).
The information provided by this function is usually also provided as a byproduct of directory iteration. During directory iteration, callingexists(*iterator) is less efficient thanexists(iterator->status()).
#include <cstdint>#include <filesystem>#include <fstream>#include <iostream>namespace fs= std::filesystem; void demo_exists(const fs::path& p, fs::file_status s= fs::file_status{}){std::cout<< p;if(fs::status_known(s)? fs::exists(s): fs::exists(p))std::cout<<" exists\n";elsestd::cout<<" does not exist\n";} int main(){const fs::path sandbox{"sandbox"}; fs::create_directory(sandbox);std::ofstream{sandbox/"file"};// create regular file fs::create_symlink("non-existing", sandbox/"symlink"); demo_exists(sandbox); for(constauto& entry: fs::directory_iterator(sandbox)) demo_exists(entry, entry.status());// use cached status from directory entry fs::remove_all(sandbox);}
Output:
"sandbox" exists"sandbox/symlink" does not exist"sandbox/file" exists
(C++17)(C++17) | determines file attributes determines file attributes, checking the symlink target (function)[edit] |
(C++17) | represents file type and permissions (class)[edit] |
checks whether directory entry refers to existing file system object (public member function of std::filesystem::directory_entry )[edit] |