Ce face fs::remove_file
fs::remove_file(cale) șterge un fișier. Dă eroare dacă fișierul nu există (NotFound) sau dacă este un director. fs::remove_dir_all(cale) șterge un director împreună cu toate fișierele și subdirectoarele din el. Pentru un director gol există și fs::remove_dir.
Fișierele nu ajung în Coșul de gunoi: sunt șterse definitiv. Verifică bine calea înainte, mai ales la remove_dir_all.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea fișierului, respectiv a directorului, de șters. |
Ce returnează
io::Result<()>.
Exemple
Exemplul 1: Ștergerea unui fișier temporar
A doua ștergere dă eroare, pentru că fișierul nu mai există. Tratăm separat cazul NotFound.
use std::fs;
use std::io::ErrorKind;
use std::path::Path;
fn main() -> std::io::Result<()> {
fs::write("temp.txt", "date temporare")?;
println!("există: {}", Path::new("temp.txt").exists());
fs::remove_file("temp.txt")?;
println!("după ștergere: {}", Path::new("temp.txt").exists());
match fs::remove_file("temp.txt") {
Ok(()) => println!("șters"),
Err(e) if e.kind() == ErrorKind::NotFound => println!("nu era nimic de șters"),
Err(e) => return Err(e),
}
Ok(())
}
Rezultat
există: true
după ștergere: false
nu era nimic de șters
Exemplul 2: Ștergerea unui director întreg
use std::fs;
use std::path::Path;
fn main() -> std::io::Result<()> {
fs::create_dir_all("cache/imagini")?;
fs::write("cache/index.txt", "1")?;
fs::write("cache/imagini/a.png", [0u8; 16])?;
println!("remove_dir pe director plin: {:?}", fs::remove_dir("cache").is_ok());
fs::remove_dir_all("cache")?;
println!("cache mai există: {}", Path::new("cache").exists());
Ok(())
}
Rezultat
remove_dir pe director plin: false
cache mai există: false
Greșeli frecvente
- Folosești
remove_filepe un director: dă eroare. Pentru directoare existăremove_dir(gol) șiremove_dir_all(cu conținut). - Construiești calea pentru
remove_dir_alldin date venite de la utilizator fără verificare: poți șterge alt director decât cel dorit.
Comenzi înrudite
fs::create_dir_all: Creează un director împreună cu toți părinții lui care lipsesc; nu dă eroare dacă directorul există deja.fs::rename: Redenumește sau mută un fișier ori un director; destinația existentă este înlocuită.Path::exists: Întreabă sistemul dacă la cale există ceva (exists), dacă este un fișier (is_file) sau un director (is_dir).