Java: InputStream. Input Stream

Java, come molte lingue moderneprogrammazione, supporta l'implementazione dei flussi di inserimento dati. In Java, InputStream è la classe base per i flussi di byte. Questa classe è astratta, cioè, nel processo del programma non possiamo creare la sua istanza. Tuttavia, nel pacchetto io, ci sono molte classi che ereditano ed estendono la funzionalità di InputStream. Per utilizzare questa classe nel codice, è necessario importarla dal pacchetto java.io.InputStream. Successivamente, esamineremo la funzionalità di base fornita dalla classe InputStream e le principali classi che la implementano.

Metodi per la classe InputStream

Prima di procedere a uno studio dettagliatometodi della classe InputStream, si dovrebbe menzionare che implementa le interfacce Closeable e AutoCloseable. L'interfaccia Closeable ci dice che quando si chiude il thread, deve essere chiuso. Questo viene fatto usando il metodo close (). Poiché la maggior parte dei metodi della classe InputStream genera un'eccezione di tipo IOException in caso di errore, tutte le operazioni devono essere eseguite nel blocco try e il metodo close () deve essere sottoposto al blocco finally per funzionare indipendentemente dal risultato del lavoro nel corpo try.

L'interfaccia AutoCloseable si riduce in modo significativola quantità di codice tecnico, perché consente al metodo close () di funzionare automaticamente e non aggiungere un blocco finale al codice. Se si utilizza una settima o versione successiva di Java, è possibile inserire InputStream in un cosiddetto try with resources, che si occupa di tutte le operazioni di chiusura.

java inputstream alla stringa

Considera i metodi principali della classe InputStream:

  • int available () - Restituisce il numero di byte disponibili per la lettura;
  • int read () - prende dalla risorsa il byte corrente e lo restituisce nella rappresentazione intera; se tutti i byte sono letti, restituisce -1;
  • int read (byte [] buffer) - legge i byte disponibili inbuffer specificato come array di tipo byte (il numero di byte letti è uguale alla dimensione del buffer specificato, restituisce il numero di byte letti, se tutti i byte disponibili sono letti, restituisce -1);
  • int read (byte [] buffer, int offset, intnumero di byte) - sovraccarico del metodo precedente, fa lo stesso, ma con la posizione indicata in "offset" e legge il numero specificato nel "numero di byte";
  • long skip (long number of bytes): salta il numero specificato di byte e restituisce il numero effettivo di byte.

InputStream è implementato da diverse classi, progettate per funzionare con diverse fonti e tipi di dati. L'albero dell'eredità è presentato di seguito.

inputstream java

Lettura dei file

Byte stream per leggere le informazioni dai fileimplementato dalla classe FileInputStream. Per aprire un file per la lettura di byte, è sufficiente creare un'istanza di questa classe, passando il nome del file al costruttore come argomento. Se il file con il nome specificato non esiste, verrà generata un'eccezione di tipo FileNotFoundException.

In caso di apertura riuscita di un file, il lavoro con esso viene eseguito utilizzando i metodi descritti sopra, poiché FileInputStream è il successore di InputStream.

Lettura di tipi di dati primitivi

L'esempio precedente ha descritto il lavoro convalori di byte che possono essere interpretati come simboli. Ma cosa succede se abbiamo bisogno di leggere un valore intero, frazionale o logico? Per fare ciò, in Java InputStream viene indirettamente espanso dalla classe DataInputStream. Questa classe è il wrapper per InputStream, che viene passato ad esso quando viene creato come argomento per il costruttore. Questo tipo di flusso legge i dati in forma binaria.

DataInputStream implementa anche l'interfaccia DataInput e dei suoi metodi per la lettura di tipi di dati primitivi. Di seguito è riportato un elenco di questi metodi.

java io inputstream

I nomi dei metodi parlano da soli: ognuno di essi è destinato alla lettura di un determinato tipo di dati.

Flusso di input bufferizzato

Il flusso di lettura dei dati bufferizzati è implementatola classe BufferedInputStream in Java. InputStream è racchiuso in questa classe. Questa classe completa il flusso con un buffer, che consente di leggere più di un byte alla volta. Ciò consente di migliorare significativamente le prestazioni dell'operazione. BufferedInputStream è un discendente indiretto di InputStream e, di conseguenza, eredita tutti i metodi precedenti.

Questa classe ha due costruttori:

  • BufferedInputStream (flusso di input InputStream);
  • BufferedInputStream (flusso di input di InputStream, dimensione del buffer int)

Dalla firma dei costruttori, è possibile capire che il primo imposta la dimensione del buffer per impostazione predefinita e nella seconda è possibile impostarlo manualmente.

conclusione

Abbiamo coperto l'implementazione di base di InputStream. Se è necessario convertire i byte ricevuti in una stringa, quindi in Java InputStream to String (), sfortunatamente, non è sovraccarico, quindi per questo dovrai usare utility speciali, ad esempio IOUtils dalla libreria Apache Commons.

</ p>
piaciuto:
0
Articoli correlati
Dettagli su come fare
Java non è installato: cosa devo fare? Come può
Come installare Java su Windows 7
Elementi del modello a oggetti Java: abstract
Errore I / O e sua eliminazione
Java Integrated Development Environment
Dispositivi di input
Correzione degli errori di "Minecraft": come fare,
Java: lavorare con i file - scrivere, leggere,
Post popolari
su