





Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Argomenti trattati • Input e Output in Java: il concetto di Stream • Input da tastiera: la classe Scanner • Output a video: System.out e sequenze di escape • Input da file: Scanner + File • Output su file: PrintWriter
Tipologia: Schemi e mappe concettuali
1 / 9
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!






1. Input e Output in Java: lo Stream
Ogni programma ha la necessità di comunicare con il mondo esterno: con l'utente attraverso tastiera e video, utilizzando file per leggere e salvare dati, con altre applicazioni sullo stesso computer o in rete. Java gestisce tutti questi tipi di comunicazione in modo uniforme attraverso un unico strumento: lo STREAM (flusso).
Uno stream è un canale di comunicazione monodirezionale attraverso cui passano dati. Può essere immaginato come un tubo in cui le informazioni scorrono sempre in una sola direzione. Poiché gli stream sono monodirezionali, per gestire sia l'ingresso che l'uscita dei dati si utilizzano due tipi distinti:
Le classi di libreria per la gestione degli stream sono incluse nel package java.io e si dividono in due grandi gruppi:
Gruppo Utilizzo tipico Esempio
Stream di caratteri Lettura/scrittura di file di testo, modificabili con qualsiasi editor.
FileReader, FileWriter, BufferedReader, PrintWriter
Stream di byte Lettura/scrittura di file binari (immagini, video, dati compressi, ecc.).
FileInputStream, FileOutputStream
Differenza chiave: i file di testo possono essere aperti e modificati con qualsiasi programma di scrittura (es. Notepad, gedit). I file binari richiedono applicazioni specifiche per essere interpretati correttamente.
public class InputTastiera { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.println("Scrivi una frase:"); String frase = scanner.nextLine(); System.out.println("La frase e': " + frase);
System.out.println("Scrivi un numero intero:"); int numero = scanner.nextInt(); System.out.println("Il numero e': " + numero);
System.out.println("Scrivi un numero decimale:"); double decimale = scanner.nextDouble(); System.out.println("Il decimale e': " + decimale);
scanner.close(); // chiude lo stream } }
3. Output a Video: System.out
Per visualizzare dati sul terminale si utilizzano i metodi della classe System.out , che rappresenta lo stream standard di output (il video/console). I due metodi principali sono:
Metodo Comportamento
System.out.println(valo re)
Stampa il valore a video e porta il cursore su una nuova riga (a capo automatico).
System.out.print(valore )
Stampa il valore a video e lascia il cursore immediatamente dopo, senza andare a capo.
System.out.println() Senza parametri: effettua soltanto un ritorno a capo (riga vuota).
Si possono stampare più valori in un'unica istruzione usando l'operatore + :
System.out.println((5+3)2); // output: 16 System.out.println('c'); // output: c System.out.println("Ciao"+10+"mondo"); // output: Ciao10mondo System.out.println("Ciao"+"Mondo"); // output: CiaoMondo boolean b = true; System.out.println(b); // output: true // Tutto quello che si somma a una stringa diventa stringa: System.out.println(""+b+'c'+10); // output: truec*
All'interno delle stringhe è possibile usare sequenze di escape per rappresentare caratteri speciali o formattare il testo:
Sequenza Descrizione
' Virgoletta singola (apostrofo): necessaria quando altrimenti sarebbe interpretata come delimitatore di char.
" Virgoletta doppia: necessaria quando altrimenti sarebbe interpretata come delimitatore di String.
\n Nuova riga (a capo): il più usato per inserire un ritorno a capo nel testo.
4. Input da File: Scanner + File
Per leggere dati da un file di testo si usa la stessa classe Scanner già vista per la tastiera, abbinata alla classe File (package java.io ). La classe File descrive file e cartelle presenti nel file system: non legge il contenuto direttamente, ma ne rappresenta il percorso.
1 Creare un oggetto File che punta al file da leggere.
2 Passare tale oggetto File al costruttore di Scanner.
import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException;
public class LetturaFile { public static void main(String[] args) throws FileNotFoundException { // Passo 1: creare l'oggetto File File file = new File("inputFile.txt");
// Passo 2: passare il File allo Scanner Scanner in = new Scanner(file);
// Lettura riga per riga fino alla fine del file while (in.hasNextLine()) { String riga = in.nextLine(); System.out.println("Letto: " + riga); }
in.close(); } }
Metodo hasNextLine(): restituisce true se ci sono ancora righe da leggere nel file, false quando si raggiunge la fine. È il metodo ideale per costruire cicli di lettura di file di testo riga per riga. Nota: lo Scanner su file usa gli stessi metodi (next, nextLine, nextInt, ecc.) già visti per la tastiera.
5. Output su File: PrintWriter
Per scrivere dati in un file di testo in modo semplice si usa la classe PrintWriter , inclusa nel package java.io. PrintWriter espone gli stessi metodi di System.out — print() e println() — ma redirige l'output su un file anziché sul terminale.
Si crea passando il nome del file di destinazione:
import java.io.PrintWriter; import java.io.FileNotFoundException;
PrintWriter out = new PrintWriter("output.txt");
Attenzione: se il file esiste già, viene svuotato (troncato a zero byte) prima di scrivervi nuovi dati. Se non esiste, viene creato automaticamente. Verificare sempre che il percorso sia corretto prima di aprire un PrintWriter.
Metodo Comportamento
out.println(valore )
Scrive il valore nel file e porta il cursore su una nuova riga.
out.print(valore) (^) Scrive il valore nel file e lascia il cursore dopo l'ultimo carattere (senza a capo).
out.close() (^) Chiude il file e svuota il buffer: INDISPENSABILE per assicurarsi che tutti i dati siano scritti su disco.
Esempio completo di scrittura su file import java.io.PrintWriter; import java.io.FileNotFoundException;
public class ScritturaSuFile { public static void main(String[] args) throws FileNotFoundException { PrintWriter out = new PrintWriter("output.txt");
out.println("Prima riga del file"); out.println("Seconda riga del file"); out.print("Valore: "); out.println(42);