Operazioni su file in Rust

Mattepuffo's logo
Operazioni su file in Rust

Operazioni su file in Rust

Oggi vediamo come eseguire le classiche operazioni sui file in Rust.

Questo il processo del nostro programmino:

  • prima controlliamo se il file esiste, ed in caso lo cancelliamo
  • poi ne creiamo uno e ci scriviamo dentro qualcosa
  • leggiamo il contenuto
  • aggiungiamo del testo
  • leggiamo di nuovo il contenuto

Questo il codice:

use std::path::Path;
use std::fs::{remove_file, File, OpenOptions};
use std::io::{Write, Read};

fn main() {
    let file_pat = "test.txt";

    let exists = Path::new(file_pat).exists();
    if exists {
        remove_file(file_pat).expect("Impossibile rimuovere il file");
    }

    write(file_pat.to_string());
    read(file_pat.to_string());
    appen(file_pat.to_string());
    read(file_pat.to_string());
}

fn write(file_pat: String) {
    let mut file = File::create(file_pat).expect("Impossibile creare il file");
    file.write_all("Ciao come stai?".as_bytes()).expect("Impossibile scrivere nel file");
}

fn read(file_pat: String) {
    let mut file = File::open(file_pat).expect("Impossibile leggere il file");
    let mut content = String::new();
    file.read_to_string(&mut content).unwrap();
    print!("{}", content);
}

fn appen(file_pat: String) {
    let mut file = OpenOptions::new().append(true).open(file_pat).expect("Impossibile aprire il file");
    file.write_all("Tutto bene tu?".as_bytes()).expect("Impossibile scrivere nel file");
}

Abbiamo importato diversi moduli, che possiamo riassumere qui:

Modulo Meod Descrizione
std::fs::File open() The open static method can be used to open a file in read-only mode.
std::fs::File create() Static method opens a file in write-only mode. If the file already existed, the old content is destroyed. Otherwise, a new file is created.
std::fs::remove_file remove_file() Removes a file from the filesystem. There is no guarantee that the file is immediately deleted.
std::fs::OpenOptions append() Sets the option for the append mode of file.
std::io::Writes write_all() Attempts to write an entire buffer into this write.
std::io::Read read_to_string() Reads all bytes until EOF in this source, appending them to buf.

Per ogni operazione usiamo expect, che ritorna un messaggio di errore in caso di fallimento.

Enjoy!


Condividi

Commentami!