Stream di ingresso e uscita

Il pacchetto java.io definisce le operazioni di ingresso e uscita in termini di stream (flussi): sequenza ordinate di dati che hanno una sorgente (per gli stream di ingresso) o una destinazione (per gli stream di uscita).

Gli stream nascondono i dettagli del sistema operativo sottostante, rendendo (per quanto possibile) trasparente la gestione di file, ecc..

Schema delle operazioni di I/O

In genere, le operazioni sugli stream ricalcano i seguenti schemi:

Tipi di stream

Gli stream forniti dal pacchetto java.io sono di due tipi:

In pratica, si usano gli stream di caratteri per i dati testuali, e i byte stream per tutti gli altri tipi di dati. Come caso particolare, i dati composti da caratteri rappresentati con un solo byte ciascuno ( ad esempio ASCII) possono essere facilmente gestiti con entrambi i tipi di stream.

Errori

Le operazioni di I/O possono sempre fallire (ad esempio, a casua di file non esistenti, permessi non adeguati, ecc..)

La maggior parte delle classi di java.io segnalano gli errori lasciando un’eccezione di tipo IOException (invece, in alcuni casi particolari, un errore viene segnalato cambiando lo stato dello stream).

Lettura di file binari

Per leggere in formato binario, si utilizza un’istanza della classe FileInputStream.