In questo tutorial, impareremo a conoscere Java ByteArrayInputStream e i suoi metodi con l'aiuto di esempi.
La ByteArrayInputStream
classe del java.io
pacchetto può essere utilizzata per leggere un array di dati di input (in byte).
Estende la InputStream
classe 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.ByteArrayInputStream
prima 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 arr
dall'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 ByteArrayInputStream
classe fornisce implementazioni per diversi metodi presenti nella InputStream
classe.
metodo read ()
read()
- legge il singolo byte dall'array presente nel flusso di inputread(byte() array)
- legge i byte dal flusso di input e li memorizza nell'array specificatoread(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,
- Abbiamo utilizzato il
available()
metodo per verificare il numero di byte disponibili nel flusso di input. - Abbiamo quindi utilizzato il
read()
metodo 2 volte per leggere 2 byte dal flusso di input. - 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 ByteArrayInputStream
classe. 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).