Ce face std::filesystem::rename
rename(vechi, nou) schimbă numele sau locația unui fișier ori director. Dacă nou este în alt director (pe același disc), fișierul este mutat acolo.
Dacă nou este un fișier care există deja, este înlocuit. Între discuri diferite, mutarea poate eșua cu filesystem_error; atunci se folosește copy urmat de remove.
Parametri
| Parametru | Descriere |
|---|---|
vechi |
Calea actuală. |
nou |
Noua cale (nume nou și/sau alt director). |
Ce returnează
Nimic. Erorile se semnalează prin filesystem_error.
Exemple
Exemplul 1: Redenumire și mutare în alt director
#include <filesystem>
#include <fstream>
#include <print>
int main() {
namespace fs = std::filesystem;
std::ofstream("ciorna.txt") << "Text final";
fs::create_directory("publicate");
fs::rename("ciorna.txt", "articol.txt");
std::println("articol.txt există: {}", fs::exists("articol.txt"));
fs::rename("articol.txt", "publicate/articol.txt");
std::println("mutat în publicate: {}", fs::exists("publicate/articol.txt"));
std::println("mai e în directorul curent: {}", fs::exists("articol.txt"));
fs::remove_all("publicate");
}
Rezultat
articol.txt există: true
mutat în publicate: true
mai e în directorul curent: false
Exemplul 2: Sursa nu există
#include <filesystem>
#include <print>
#include <system_error>
int main() {
namespace fs = std::filesystem;
std::error_code ec;
fs::rename("nu-exista.txt", "nou.txt", ec);
if (ec) {
std::println("Nu am putut redenumi: {}", ec.message());
}
}
Rezultat
Nu am putut redenumi: No such file or directory
Greșeli frecvente
- Redenumești peste un fișier existent crezând că primești o eroare. Destinația este înlocuită fără avertisment; verifică întâi cu
existsdacă nu vrei asta.
Comenzi înrudite
std::filesystem::copy: Copiază fișiere și directoare; cu copy_options::recursive copiază un director cu tot conținutul.std::filesystem::remove: Șterge un fișier sau un director gol; remove_all șterge un director cu tot conținutul lui.std::filesystem::exists: Verifică dacă un fișier sau director există pe disc.