Ce face fs::write
fs::write(cale, continut) creează fișierul (sau îl golește dacă există deja), scrie conținutul și îl închide. Conținutul poate fi text (&str, String) sau octeți (&[u8], Vec<u8>).
Pentru a adăuga la sfârșitul unui fișier fără să-l ștergi, folosește OpenOptions cu append(true). Pentru multe scrieri mici, un BufWriter peste un File este mai eficient. Directorul în care scrii trebuie să existe.
Parametri
| Parametru | Descriere |
|---|---|
path |
Calea fișierului. |
contents |
Textul sau octeții de scris. |
Ce returnează
io::Result<()>.
Exemple
Exemplul 1: Scrierea unui raport
Construim textul cu format! și îl scriem dintr-odată. A doua scriere înlocuiește complet conținutul.
use std::fs;
use std::io;
fn main() -> io::Result<()> {
let produse = [("pâine", 5.0), ("lapte", 7.5), ("cafea", 24.9)];
let mut raport = String::from("produs,pret\n");
for (nume, pret) in produse {
raport += &format!("{nume},{pret:.2}\n");
}
fs::write("raport.csv", &raport)?;
print!("{}", fs::read_to_string("raport.csv")?);
fs::write("raport.csv", "gol\n")?;
print!("după a doua scriere: {}", fs::read_to_string("raport.csv")?);
Ok(())
}
Rezultat
produs,pret
pâine,5.00
lapte,7.50
cafea,24.90
după a doua scriere: gol
Exemplul 2: Scriere de octeți și eroare pentru director inexistent
use std::fs;
fn main() {
let octeti: Vec<u8> = vec![0x52, 0x75, 0x73, 0x74];
fs::write("date.bin", &octeti).unwrap();
println!("date.bin: {:?}", fs::read("date.bin").unwrap());
if let Err(e) = fs::write("nu_exista/fisier.txt", "text") {
println!("eroare: {e}");
}
}
Rezultat
date.bin: [82, 117, 115, 116]
eroare: No such file or directory (os error 2)
Greșeli frecvente
- Ignori rezultatul:
fs::write("a.txt", "x");dă avertismentulunused_must_use. Folosește?sau tratează eroarea. - Te aștepți ca
fs::writesă adauge la final: suprascrie tot. Pentru adăugare foloseșteOpenOptions::new().append(true). - Scrii într-un director care nu există: eroarea
NotFound. Creează-l înainte cufs::create_dir_all.
Comenzi înrudite
fs::read_to_string: Citește tot conținutul unui fișier text într-un String, dintr-un singur apel.OpenOptions: Deschide un fișier cu opțiuni alese: adăugare la final, creare dacă lipsește, doar dacă nu există etc.io::BufWriter: Adaugă un buffer peste orice scriitor: strânge scrierile mici și le trimite în bucăți mari, mult mai rapid.fs::create_dir_all: Creează un director împreună cu toți părinții lui care lipsesc; nu dă eroare dacă directorul există deja.