Esercitazione su files


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 costituiti da sequenze di caratteri ASCII. Qualsiasi informazione, anche numerica, deve quindi essere scritta o letta sotto forma di stringa di caratteri, provvedendo all'interno del programma alle opportune conversioni in caso debbano essere lette o scritte informazioni di altro tipo, ad esempio numeriche. Un vantaggio 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 l'editor Blocco Note.

Non affrontiamo in dettaglio l'uso di file di testo, ma gli esercizi proposti possono essere risolti in base ai due programmi di esempio indicati nel seguito, che usano la classe Scanner (introdotta con la versione JDK 1.5) e la classe PrintWriter.

Estensioni proposte

  1. Leggere un file di testo (il cui nome viene immesso da tastiera) che contiene un valore reale su ciascuna riga, 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).
  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. (questo punto è particolarmente impegnativo) Si assuma che il file rappresenti diverse sequenze di valori; ciascuna sequenza è separata dalla precedente da una linea che inizia con il carattere '='. Il programma deve scrivere su file, per ciascuna delle sequenze lette, il numero di valori della sequenza, la somma e la media dei valori. Una soluzione a questo problema è disponibile in SoluzioneSequenze.java. La soluzione proposta usa la semplice classe Sequenza.java, della quale è fornita la documentazione javadoc.