Функция rename
Функция rename переименовывает файл или директорию. В первом параметре мы передаем путь к исходному файлу или папке, который нужно переименовать или переместить. Во втором параметре указываем новое имя или новый путь. Если целевой путь указывает на другую директорию, файл будет перемещен. Если файл с таким именем уже существует в целевой директории, поведение зависит от операционной системы: в POSIX-системах файл будет заменен, в Windows операция завершится ошибкой.
Функция возвращает true в случае успеха и false, если операцию выполнить не удалось.
Синтаксис
bool rename(const path& old_path, const path& new_path);
bool rename(const path& old_path, const path& new_path, error_code& ec);
Пример
Давайте переименуем файл old.txt в new.txt:
#include <iostream>
#include <filesystem>
#include <fstream>
using namespace std;
namespace fs = std::filesystem;
int main()
{
// Create a file for demonstration
ofstream("old.txt") << "test";
bool res = fs::rename("old.txt", "new.txt");
cout << boolalpha << res << endl;
return 0;
}
Результат выполнения кода:
true
Пример
Давайте переместим файл file.txt в директорию folder, изменив его имя на moved.txt:
#include <iostream>
#include <filesystem>
#include <fstream>
using namespace std;
namespace fs = std::filesystem;
int main()
{
// Create file and directory for demonstration
ofstream("file.txt") << "data";
fs::create_directory("folder");
bool res = fs::rename("file.txt", "folder/moved.txt");
cout << boolalpha << res << endl;
return 0;
}
Результат выполнения кода:
true
Пример
Давайте попробуем переименовать несуществующий файл и обработаем ошибку:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
error_code ec;
bool res = fs::rename("missing.txt", "target.txt", ec);
if (!res) {
cout << "Error: " << ec.message() << endl;
}
return 0;
}
Результат выполнения кода:
"Error: No such file or directory"