std::experimental::filesystem::rename - cppreference.com (original) (raw)

Moves or renames the filesystem object identified by old_p to new_p as if by the POSIX rename:

Rename fails if

[edit] Parameters

old_p - path to move or rename
new_p - target path for the move/rename operation
ec - out-parameter for error reporting in the non-throwing overload

[edit] Return value

(none)

[edit] Exceptions

The overload that does not take an error_code& parameter throws filesystem_error on underlying OS API errors, constructed with old_p as the first argument, new_p as the second argument, and the OS error code as the error code argument. std::bad_alloc may be thrown if memory allocation fails. The overload taking an error_code& parameter sets it to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur. This overload has

[edit] Example

#include <experimental/filesystem> #include #include namespace fs = std::experimental::filesystem;   int main() { fs::path p = fs::current_path() / "sandbox"; fs::create_directories(p/"from"); std::ofstream(p/"from/file1.txt").put('a'); fs::create_directory(p/"to");   // fs::rename(p/"from/file1.txt", p/"to/"); // error: to is a directory fs::rename(p/"from/file1.txt", p/"to/file2.txt"); // OK // fs::rename(p/"from", p/"to"); // error: to is not empty fs::rename(p/"from", p/"to/subdir"); // OK   fs::remove_all(p); }

[edit] See also