Ce face File.copy
copy(caleNoua) creează o copie a fișierului. Dacă la caleNoua există deja un fișier, acesta este suprascris. Fișierul original rămâne neschimbat.
rename(caleNoua) mută fișierul: îl redenumește în același director sau îl mută în alt director (dacă directorul există). Obiectul File vechi indică în continuare spre calea veche, care nu mai există; lucrează mai departe cu obiectul returnat.
Ambele au variantele sincrone copySync și renameSync. Între discuri diferite rename poate eșua; atunci faci copy urmat de delete.
Parametri
| Parametru | Descriere |
|---|---|
newPath |
Calea de destinație. |
Ce returnează
Un Future<File> cu fișierul de la noua cale.
Exemple
Exemplul 1: Copie de siguranță
import 'dart:io';
Future<void> main() async {
final original = File('catalog.txt');
await original.writeAsString('Ana 10\nIon 8\n');
final copie = await original.copy('catalog.bak');
await original.writeAsString('Ana 10\nIon 9\n');
print('Original: ${(await original.readAsLines()).last}');
print('Copie (${copie.path}): ${(await copie.readAsLines()).last}');
}
Rezultat
Original: Ion 9
Copie (catalog.bak): Ion 8
Exemplul 2: Redenumire și mutare în alt director
import 'dart:io';
Future<void> main() async {
final poza = File('IMG_0042.jpg');
await poza.writeAsBytes([1, 2, 3]);
await Directory('vacanta').create();
final noua = await poza.rename('vacanta/mare_constanta.jpg');
print(noua.path);
print('Vechea cale există: ${await poza.exists()}');
print('Noua cale există: ${await noua.exists()}');
}
Rezultat
vacanta/mare_constanta.jpg
Vechea cale există: false
Noua cale există: true
Greșeli frecvente
- Continui să folosești obiectul vechi după
rename: indică spre o cale care nu mai există. Folosește obiectul returnat. - Copiezi peste un fișier important fără să verifici:
copysuprascrie destinația fără întrebare.
Comenzi înrudite
File.delete: Șterge fișierul de pe disc (definitiv, nu în coș); aruncă eroare dacă fișierul nu există.File.exists: Verifică dacă fișierul există pe disc; existsSync returnează direct true sau false.Directory: Clasa Directory reprezintă un director (folder) de pe disc: îl creezi, îl listezi, verifici dacă există, îl ștergi.