| Member functions | ||||
| Modifiers | ||||
directory_entry::assign | ||||
| Observers | ||||
(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20) | ||||
| Non-member functions | ||||
void assign(conststd::filesystem::path& p); | (1) | (since C++17) |
void assign(conststd::filesystem::path& p,std::error_code& ec); | (2) | (since C++17) |
Assigns new content to the directory entry object. Sets the path top and callsrefresh to update the cached attributes. If an error occurs, the values of the cached attributes are unspecified.
This function does not commit any changes to the filesystem.
Contents |
| p | - | path to the filesystem object to which the directory entry will refer |
| ec | - | out-parameter for error reporting in the non-throwing overload |
(none)
Any overload not markednoexcept may throwstd::bad_alloc if memory allocation fails.
#include <filesystem>#include <fstream>#include <iostream> void print_entry_info(conststd::filesystem::directory_entry& entry){if(std::cout<<"The entry "<< entry; not entry.exists()){std::cout<<" does not exists on the file system\n";return;}std::cout<<" is ";if(entry.is_directory())std::cout<<"a directory\n";if(entry.is_regular_file())std::cout<<"a regular file\n";/*...*/} int main(){std::filesystem::current_path(std::filesystem::temp_directory_path()); std::filesystem::directory_entry entry{std::filesystem::current_path()}; print_entry_info(entry); std::filesystem::path name{"cppreference.html"};std::ofstream{name}<<"C++"; std::cout<<"entry.assign();\n"; entry.assign(entry/name); print_entry_info(entry); std::cout<<"remove(entry);\n";std::filesystem::remove(entry); print_entry_info(entry);// the entry still contains old "state" std::cout<<"entry.assign();\n"; entry.assign(entry);// or just call entry.refresh() print_entry_info(entry);}
Possible output:
The entry "/tmp" is a directoryentry.assign();The entry "/tmp/cppreference.html" is a regular fileremove(entry);The entry "/tmp/cppreference.html" is a regular fileentry.assign();The entry "/tmp/cppreference.html" does not exists on the file system
| assigns contents (public member function)[edit] |