Ce face fs::copy
fs::copy(sursa, destinatie) copiază fișierul și permisiunile lui. Dacă destinația există, este suprascrisă. Returnează câți octeți au fost copiați.
Funcția copiază doar fișiere, nu directoare întregi; pentru un director trebuie să parcurgi conținutul cu read_dir și să copiezi fiecare fișier. Directorul destinației trebuie să existe.
Parametri
| Parametru | Descriere |
|---|---|
from |
Fișierul sursă. |
to |
Calea copiei. |
Ce returnează
io::Result<u64>: numărul de octeți copiați.
Exemple
Exemplul 1: Copie de siguranță
use std::fs;
fn main() -> std::io::Result<()> {
fs::write("setari.ini", "tema=intunecata\nlimba=ro\n")?;
fs::create_dir_all("backup")?;
let octeti = fs::copy("setari.ini", "backup/setari.ini")?;
println!("am copiat {octeti} octeți");
fs::write("setari.ini", "tema=luminoasa\n")?;
print!("original: {}", fs::read_to_string("setari.ini")?);
print!("copie: {}", fs::read_to_string("backup/setari.ini")?.lines().next().unwrap_or(""));
println!();
Ok(())
}
Rezultat
am copiat 25 octeți
original: tema=luminoasa
copie: tema=intunecata
Exemplul 2: Erori la copiere
use std::fs;
fn main() {
println!("sursă lipsă: {:?}", fs::copy("nu_exista.txt", "copie.txt").map_err(|e| e.kind()));
fs::create_dir_all("dosar").unwrap();
println!("director ca sursă: {:?}", fs::copy("dosar", "dosar2").is_err());
}
Rezultat
sursă lipsă: Err(NotFound)
director ca sursă: true
Greșeli frecvente
- Încerci să copiezi un director cu
fs::copy: dă eroare. Copiază fișierele unul câte unul. - Copiezi peste un fișier important fără să verifici: destinația este suprascrisă fără întrebare.
Comenzi înrudite
fs::rename: Redenumește sau mută un fișier ori un director; destinația existentă este înlocuită.fs::read_dir: Listează intrările (fișiere și directoare) dintr-un director, ca iterator de DirEntry.fs::write: Scrie tot conținutul dat într-un fișier, creându-l dacă nu există și înlocuindu-l dacă există.