English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, impareremo attraverso esempi Java ByteArrayInputStream e i suoi metodi.
La classe\u00A0ByteArrayInputStream\u00A0del pacchetto\u00A0java.io\u00A0può essere utilizzata per leggere l'array di dati di input (in termini di byte).
Eredita la classe astratta\u00A0InputStream.
Attenzione: Nella\u00A0ByteArrayInputStream, viene utilizzato un array di byte per creare l'input stream. Include un array interno utilizzato per memorizzare i dati del byte array specifico.
Per creare un ByteArrayInputStream di byte array, dobbiamo prima importare il pacchetto\u00A0java.io.ByteArrayInputStream. Dopo aver importato il pacchetto, possiamo creare l'input stream.
//Creazione di un ByteArrayInputStream per leggere l'intero array ByteArrayInputStream\u00A0input\u00A0=\u00A0new\u00A0ByteArrayInputStream(byte[]\u00A0arr);
In questo caso, abbiamo creato un input stream che legge i dati interi dall'array\u00A0arr. Ma possiamo anche creare un input stream che legge solo una parte dei dati dell'array.
//Creazione di un ByteArrayInputStream per leggere una parte dell'array ByteArrayInputStream\u00A0input\u00A0=\u00A0new\u00A0ByteArrayInputStream(byte[]\u00A0arr,\u00A0int\u00A0start,\u00A0int\u00A0length);
In questo caso, l'input stream legge un numero di byte uguale a\u00A0length\u00A0dall'inizio dell'array
La classe\u00A0ByteArrayInputStream\u00A0fornisce implementazioni per diversi metodi della classe\u00A0InputStream
read()\u00A0-\u00A0Legge un singolo byte dall'array esistente nell'input stream
read(byte[]\u00A0array)\u00A0-\u00A0Legge i byte dall'input stream e li memorizza nell'array specificato
read(byte[]\u00A0array,\u00A0int\u00A0start,\u00A0int\u00A0length)\u00A0-\u00A0Legge un numero di byte uguale a\u00A0length\u00A0dall'input stream e li memorizza nell'array specificato a partire dalla posizione\u00A0start
import java.io.ByteArrayInputStream; public class Main { public\u00A0static\u00A0void\u00A0main(String[]\u00A0args)\u00A0{ // creare un array di byte byte[] \u00A0array\u00A0=\u00A01,\u00A02,\u00A03,\u00A04; try { ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("Lettura dei byte dall'input stream: \u00A0"); for(int i = 0; i < array.length; i++) { // leggere byte int data = input.read(); System.out.print(data + ", "); } input.close(); } catch(Exception e) { e.getStackTrace(); } } }
Risultato di output
Byte letti dall'input stream: 1, 2, 3, 4,
Nell'esempio sopra, abbiamo creato un input stream di array di byte chiamato input.
ByteArrayInputStream input = new ByteArrayInputStream(array);
In questo caso, l'input stream include tutti i dati dall'array specificato. Per leggere i dati dall'input stream, abbiamo utilizzato il metodo read().
Per ottenere il numero di byte disponibili nell'input stream, possiamo utilizzare il metodo available(). Ad esempio
import java.io.ByteArrayInputStream; public class Main { public static void main(String args[]) { // creare array di byte byte[] array = { 1, 2, 3, 4 }; try { ByteArrayInputStream input = new ByteArrayInputStream(array); // restituisce il numero di byte disponibili System.out.println("Numero di byte disponibili all'inizio: " + input.available()); // legge due byte dall'input stream input.read(); input.read(); // restituisce il numero di byte disponibili System.out.println("Numero di byte disponibili alla fine: " + input.available()); input.close(); } catch (Exception e) { e.getStackTrace(); } } }
Risultato di output
Numero di byte disponibili all'inizio: 4 Numero di byte disponibili alla fine: 2
Nell'esempio sopra
Abbiamo già utilizzato il metodo available() per verificare il numero di byte disponibili nell'input stream.
Poi, abbiamo utilizzato il metodo read() due volte per leggere 2 byte dall'input stream.
Ora, dopo aver letto 2 byte, abbiamo verificato i byte disponibili. Questa volta, i byte disponibili sono diminuiti di 2.
Per scartare e saltare byte specifici, è possibile utilizzare il metodo skip(). Ad esempio
import java.io.ByteArrayInputStream; public class Main { public static void main(String args[]) { // creare un array di byte byte[] array = { 1, 2, 3, 4 }; try { ByteArrayInputStream input = new ByteArrayInputStream(array); // utilizzare il metodo skip() input.skip(2); System.out.print("Salta 2 byte dell'input stream: "); int data = input.read(); while (data != -1) { System.out.print(data + ", "); data = input.read(); } // chiudi() metodo input.close(); } catch (Exception e) { e.getStackTrace(); } } }
Risultato di output
Stream di input saltati di 2 byte: 3, 4,
Nel esempio sopra, abbiamo utilizzato il metodo skip() per saltare 2 byte di dati nello stream di input. Quindi, non leggiamo 1 e 2.
Per chiudere lo stream di input, utilizzare il metodo close().
Ma il metodo close() non ha effetto nella classe ByteArrayInputStream. Anche dopo che il metodo close() è stato chiamato, possiamo utilizzare i metodi di questa classe.
Metodo | Descrizione del contenuto |
---|---|
finalize() | Assicurati che venga chiamato il metodo close() |
mark() | Segna la posizione dei dati letti dello stream di input |
reset() | Restituisci il controllo al punto di stream di input impostato con un segno di spunta |
markSupported() | Controlla se lo stream di input supporta mark() e reset() |