Shopping cart

0

Cart

  • 0 item

Nessun prodotto nel carrello.

All categories
 Corso Gratuito di Programmazione Rust Lezione 041 – Lettura di un File

SE VUOI PRENDERE LA CERTIFICAZIONE PER QUESTO CORSO CLICCA QUI

Lettura di un File

Adesso aggiungeremo la funzionalità per leggere il file specificato nell’argomento file_path. Prima, abbiamo bisogno di un file di esempio da testare: useremo un file con una piccola quantità di testo su più righe con alcune parole ripetute. La Lista 12-3 contiene una poesia di Emily Dickinson che funzionerà bene! Crea un file chiamato poesia.txt nella cartella principale del tuo progetto e inserisci la poesia “Io non sono nessuno! Chi sei tu?”

Filename: poesia.txt

css

Io non sono nessuno! Chi sei tu?
Sei anche tu nessuno?
Allora siamo una coppia - non dirlo!
Ci esilierebbero, lo sai.

Che tristezza essere qualcuno!
Che pubblico, come una rana
Dirti il tuo nome tutto il giorno
A una palude ammirata!

Lista 12-3: Una poesia di Emily Dickinson fa un buon caso di test

Con il testo al suo posto, modifica src/main.rs e aggiungi il codice per leggere il file, come mostrato nella Lista 12-4.

Filename: src/main.rs

rust

use std::env;
use std::fs;
fn main() {
// --snip--
println!("Nel file {}", file_path); let contents = fs::read_to_string(file_path)
.expect("Dovrebbe essere stato possibile leggere il file");

println!("Con testo:\n{contents}");
}

Lista 12-4: Lettura del contenuto del file specificato dal secondo argomento

Prima di tutto, portiamo in scope una parte rilevante della libreria standard con una dichiarazione use: abbiamo bisogno di std::fs per gestire i file.

Nel main, la nuova istruzione fs::read_to_string prende il file_path, apre quel file e restituisce un std::io::Result<String> del contenuto del file.

Dopo di che, aggiungiamo nuovamente una dichiarazione println! temporanea che stampa il valore di contents dopo che il file è stato letto, così possiamo verificare che il programma funzioni finora.

Eseguiamo questo codice con una stringa qualsiasi come primo argomento della riga di comando (perché non abbiamo ancora implementato la parte di ricerca) e il file poesia.txt come secondo argomento:

sh

$ cargo run -- il poesia.txt
Compilazione in corso per minigrep v0.1.0 (file:///projects/minigrep)
Finito dev [non ottimizzato + informazioni di debug] target(s) in 0.0s
Esecuzione di `target/debug/minigrep il poesia.txt`
Ricerca per il
Nel file poesia.txt
Con testo:
Io non sono nessuno! Chi sei tu?
Sei anche tu nessuno?
Allora siamo una coppia - non dirlo!
Ci esilierebbero, lo sai.

Che tristezza essere qualcuno!
Che pubblico, come una rana
Dirti il tuo nome tutto il giorno
A una palude ammirata!

Ottimo! Il codice ha letto e quindi stampato il contenuto del file. Ma il codice ha alcune lacune. Al momento, la funzione main ha molte responsabilità: in generale, le funzioni sono più chiare e più facili da mantenere se ciascuna funzione è responsabile di un’unica idea. L’altro problema è che non stiamo gestendo gli errori così bene come potremmo. Il programma è ancora piccolo, quindi queste lacune non sono un grosso problema, ma man mano che il programma cresce, sarà più difficile correggerle in modo pulito. È una buona pratica iniziare a rifattorizzare fin dall’inizio dello sviluppo di un programma, perché è molto più facile rifattorizzare quantità minori di codice. Faremo questo prossimamente.

1 Comment

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *