Java ByteArrayInputStream (con esempi)

In questo tutorial, impareremo a conoscere Java ByteArrayInputStream e i suoi metodi con l'aiuto di esempi.

La ByteArrayInputStreamclasse del java.iopacchetto può essere utilizzata per leggere un array di dati di input (in byte).

Estende la InputStreamclasse astratta.

Nota : in ByteArrayInputStream, il flusso di input viene creato utilizzando l'array di byte. Include un array interno per memorizzare i dati di quel particolare array di byte.

Crea un ByteArrayInputStream

Per creare un flusso di input di array di byte, dobbiamo java.io.ByteArrayInputStreamprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare un flusso di input.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Qui abbiamo creato un flusso di input che legge interi dati arrdall'array. Tuttavia, possiamo anche creare il flusso di input che legge solo alcuni dati dall'array.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Qui il flusso di input legge il numero di byte pari alla lunghezza dall'array a partire dalla posizione iniziale.

Metodi di ByteArrayInputStream

La ByteArrayInputStreamclasse fornisce implementazioni per diversi metodi presenti nella InputStreamclasse.

metodo read ()

  • read() - legge il singolo byte dall'array presente nel flusso di input
  • read(byte() array) - legge i byte dal flusso di input e li memorizza nell'array specificato
  • read(byte() array, int start, int length) - legge il numero di byte uguale alla lunghezza dal flusso e memorizza nell'array specificato a partire dall'inizio della posizione

Esempio: ByteArrayInputStream per leggere i dati

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 I byte letti dal flusso di input: 1, 2, 3, 4, 

Nell'esempio precedente, abbiamo creato un flusso di input di array di byte denominato input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Qui, il flusso di input include tutti i dati dalla matrice specificata. Per leggere i dati dal flusso di input, abbiamo utilizzato il read()metodo.

disponibile () Metodo

Per ottenere il numero di byte disponibili nel flusso di input, possiamo utilizzare il available()metodo. Per esempio,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 Byte disponibili all'inizio: 4 Byte disponibili alla fine: 2 

Nell'esempio sopra,

  1. Abbiamo utilizzato il available()metodo per verificare il numero di byte disponibili nel flusso di input.
  2. Abbiamo quindi utilizzato il read()metodo 2 volte per leggere 2 byte dal flusso di input.
  3. Ora, dopo aver letto i 2 byte, abbiamo controllato i byte disponibili. Questa volta i byte disponibili sono diminuiti di 2.

metodo skip ()

Per scartare e saltare il numero di byte specificato, possiamo usare il skip()metodo. Per esempio,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 Flusso di input dopo aver saltato 2 byte: 3, 4, 

Nell'esempio precedente, abbiamo utilizzato il metodo skip () per saltare 2 byte di dati dal flusso di input. Quindi 1 e 2 non vengono letti dal flusso di input.

metodo close ()

Per chiudere il flusso di input, possiamo usare il close()metodo.

Tuttavia, il close()metodo non ha alcun effetto in ByteArrayInputStreamclasse. Possiamo usare i metodi di questa classe anche dopo che il close()metodo è stato chiamato.

Altri metodi di ByteArrayInputStream

Metodi Descrizioni
finalize() assicura che il close()metodo venga chiamato
mark() segna la posizione nel flusso di input fino alla quale i dati sono stati letti
reset() restituisce il controllo al punto del flusso di input in cui è stato impostato il contrassegno
markSupported() controlla se il flusso di input supporta mark()ereset()

Per saperne di più, visita Java ByteArrayInputStream (documentazione ufficiale di Java).

Articoli interessanti...