Esercitazione su file di testo


Obiettivi


Introduzione

Le API standard Java contengono numerose classi per la lettura di dati da file e la scrittura di dati su file. In questa esercitazione usiamo solo file di testo, cioè file che contengono sequenze di caratteri.

In un file di testo qualsiasi informazione viene scritta o letta sotto forma di caratteri, provvedendo all'interno del programma alle opportune conversioni in caso debbano essere lette o scritte informazioni di altro tipo, ad esempio numeriche. Quindi un numero intero, p.es. 152, non sarà rappresentato dalla sua codifica binaria posizionale ma dalla sequenza di caratteri '1' '5' '2'.

Il vantaggio principale nell'uso di questo tipo di file è che le informazioni contenute nel file possono essere lette o modificate da qualsiasi programma sia in grado di manipolare file di testo, come ad esempio in ambiente Windows l'editor Blocco Note.

Non affrontiamo in dettaglio tutte le maniere disponibili in Java per leggere o scrivere file di testo, ma gli esercizi proposti possono essere risolti come mostrato nei programmi di esempio indicati nel seguito, che usano la classe Scanner (introdotta con la versione JDK 1.5) per la lettura e la classe PrintWriter per la scrittura.

Estensioni proposte

  1. Leggere un file di testo, il cui nome viene immesso da tastiera, che contiene un valore reale su ciascuna riga (a seconda delle impostazioni del PC, è possibile che nei numeri reali il punto decimale debba essere sostituito da una virgola), e alla fine della lettura visualizzare il numero di valori letti, il numero di valori strettamente positivi e il numero di valori strettamente negativi. Sia il programma compilato che il file da leggere dovranno risiedere nella stessa cartella. Naturalmente il file di numeri reali da leggere dovrà essere creato prima di eseguire il programma, p.es. usando l'editor BloccoNote.
  2. Come sopra, ma i tre risultati devono essere scritti su un file di testo (anche il nome di questo file viene immesso da tastiera). Un esempio di programma che legge da un file di testo e scrive in un altro file di testo è disponibile in CopiaFile.java
  3. Leggere da tastiera un valore reale (soglia). Leggere poi un file come nel punto 2, e copiare su un altro file di testo solo i valori letti che differiscono dalla soglia di non pių del 7%, in più o in meno.
  4. Leggere un file come nel punto 1. Il file contiene un numero reale su ciascuna riga, il valore letto dalla prima riga deve essere assunto come valore di riferimento. Il programma deve creare un secondo file di testo, il cui nome è letto da tastiera. Su questo file deve essere scritta una coppia di valori separati da ';' misura; scarto, in cui misura è il numero letto dal file di input e scarto è la variazione percentuale della misura rispetto al valore di riferimento. Il valore di riferimento deve essere copiato sul file di output con scarto pari a 1. P.es., se il file di input contiene:
    40
    35
    38
    42
    50
    
    deve essere prodotto il file:
    40; 1
    35; -12.5%
    38; -5%
    42; +5%
    50; +25%