English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

教程基础Java

Controllo dei flussi Java

Array Java

Orientamento ad oggetti Java (I)

Orientamento ad oggetti Java (II)

Orientamento ad oggetti Java (III)

Gestione delle eccezioni Java

Lista Java

Queue Java (Coda)

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Classe ByteArrayInputStream Java

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.

Creazione di un ByteArrayInputStream

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

Metodi\u00A0ByteArrayInputStream

La classe\u00A0ByteArrayInputStream\u00A0fornisce implementazioni per diversi metodi della classe\u00A0InputStream

Metodo\u00A0read()

  • 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

Esempio: lettura dei dati con ByteArrayInputStream

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().

metodo available()

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

  1. Abbiamo già utilizzato il metodo available() per verificare il numero di byte disponibili nell'input stream.

  2. Poi, abbiamo utilizzato il metodo read() due volte per leggere 2 byte dall'input stream.

  3. Ora, dopo aver letto 2 byte, abbiamo verificato i byte disponibili. Questa volta, i byte disponibili sono diminuiti di 2.

metodo skip()

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.

Metodo close()

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.

Altri metodi di ByteArrayInputStream

MetodoDescrizione 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()