• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Info I flussi di input/output

Mi.ke

Utente Master
Autore del topic
16 Giugno 2011
2.857
60
Miglior risposta
0


I flussi di input/output
Gli archivi di dati sono rappresentati da un insieme di informazioni registrate su un supporto di memorizzazione, quale può essere un disco. Le informazioni presenti nella memoria secondaria sono indicate con il termine : File.

Le operazioni fondamentali riguardanti il trattamento di un file sono:

-Apertura : si stabilisce un collegamento tra memoria centrale e l'unità di memoria di massa dove è contenuto il file per svolgere su di esso le operazioni successive.
-Lettura : Le operazioni che trasferiscono i dati dal file alla memoria centrale.
-Scrittura : le operazioni che trasferiscono dati dalla memoria centrale al file.
-Chiusura : Si chiude il collegamento, alla fine delle operazioni.

La lettura si indica anche con input e la scrittura con output, e le operazioni che trasferiscono informazioni dalla memoria centrale al file e viceversa si chiamano in generale operazioni di I/O (input/output).

In java le classi che gestiscono l'I/O sono contenuti nel package java.io.*;

Java gestisce queste operazioni con il concetto di stream, cioè di flusso di dati. Gli stream costituiscono in pratica sequenze ordinate di dati che si dividono in:

-Stream di input: in cui i dati viaggiano dalla sorgente al software. (Ad esempio un file su disco da cui si leggono i dati)
-Stream di output: in cui i dati viaggiano dal software alla sorgente. (Ad esempio i dati da visualizzare su schermo)

Gli stream vengono creati in java istanziando le classi contenute nel package java.io. E' possibile classificare queste classi in due categorie:

-Classi basate su flussi di byte
-Classi basate su flussi i caratteri.

In java questa differenza è data dal fatto che i byte sono farmati da 8 bit mentre i caratteri sono gestiti con 16 bit.
Le classi basate sui byte hanno come sopraclasse InputStream e OutputStream.
Mentre le classi basate sui caratteri hanno come sopraclasse Reader(input) e Writer(output).

Una delle caratteristiche dei flussi di I/O in Java è la possibilità di concatenare tra loro più stream. Questo risulta utile perché ogni stream consente di osservare i dati in un certo modo, accedendo agli stesso attraverso dei metodi tipici del singolo stream.

Esempio:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

I file trattati da Java possono essere di due categorie:
-File strutturati
-File di testo.

I file strutturati sono composti da una struttura definita nel programma: devono necessariamente essere letti secondo un criterio ben specificato.
Ad esempio (Stringa,intero,double,Stringa).
Non possiamo leggere in un altro modo, poiché si va incontro a errori madornali e senza senso :|

I file di testo è composto da sequenze di linee di caratteri, in cui ogni linea termina con un carattere speciale di fine riga.Il contenuto di questi file può essere letto anche usando un editor di testi.
I file strutturati utilizzano le classi basate sui byte per le operazioni di I/O, mentre i file di testo utilizzano le classi basate sui caratteri.

Esempi di lettura/scrittura in java su File Strutturati:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Ovviamente bisogna gestire delle eccezioni, in lettura: EOFException, in scrittura basta un: Exception.


Esempi di lettura/scrittura su File di Testo:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Eccezioni: IOException da gestire.

Abbiamo finito, spero anche qui di essere stato abbastanza chiaro, per ulteriori chiarimenti sapete cosa fare.
Un saluto :bye: