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

教程基础Java

Java controllo dei flussi

Java array

Java orientato agli oggetti (I)

Java orientato agli oggetti (II)

Java orientato agli oggetti (III)

Gestione delle eccezioni Java

List Java

Queue (coda) Java

Map di Java

Set di Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Classe Java ByteArrayOutputStream

In questo tutorial, impareremo tramite esempi Java ByteArrayOutputStream e i suoi metodi

La classe ByteArrayOutputStream del pacchetto java.io può essere utilizzata per scrivere array di dati di output (in byte)

Eredita l'astrazione OutputStream

AttenzioneMaintiene un array di byte interno per memorizzare i dati in ByteArrayOutputStream

Crea un ByteArrayOutputStream

Per creare uno stream di output di array di byte, dobbiamo prima importare il pacchetto java.io.ByteArrayOutputStream. Dopo aver importato il pacchetto, possiamo creare lo stream di output.

// Crea un ByteArrayOutputStream di dimensione predefinita
ByteArrayOutputStream out = new ByteArrayOutputStream();

In questo caso, abbiamo creato uno stream di output che scrive dati in un array di byte di dimensione predefinita di 32 byte. Ma possiamo cambiare la dimensione predefinita dell'array.

// Crea un ByteArrayOutputStream di dimensione specificata
ByteArrayOutputStream out = new ByteArrayOutputStream(int size);

In questo caso, size specifica la lunghezza dell'array

Metodi di ByteArrayOutputStream

La classe ByteArrayOutputStream fornisce implementazioni di diversi metodi presenti nello stream di output

Metodo write()

  • write(int byte) - Scrive il byte specificato nello stream di output

  • write(byte[] array) - Scrive i byte dell'array specificato nello stream di output

  • write(byte[] arr, int start, int length) - Scrive una sequenza di byte di lunghezza equal a length a partire dalla posizione start nell'output stream dell'array

  • writeTo(ByteArrayOutputStream out1) - Scrive tutti i dati dello stream di output corrente nello stream di output specificato

Esempio: ByteArrayOutputStream scrive dati

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is a line of text inside the string.";
    try {
    //Crea un output stream
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      byte[] array = data.getBytes();
      //Scrive i dati nell'output stream
      out.write(array);
      //Recupera i dati dall'output stream in formato stringa
      String streamData = out.toString();
      System.out.println("Output stream: " + streamData);
      out.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Risultato di output

Output stream: This is a line of text inside the string.

Nell'esempio sopra, abbiamo creato un output stream di array di byte chiamato output.

ByteArrayOutputStream output = new ByteArrayOutputStream();

Per scrivere i dati nell'output stream, abbiamo utilizzato il metodo write().

Attenzione:Il metodo getBytes() utilizzato nel programma converte una stringa in un array di byte.

Accesso ai dati da ByteArrayOutputStream

  • toByteArray() - Restituisce l'array esistente nell'output stream

  • toString() - Restituisce tutti i dati dell'output stream in forma di stringa

Ad esempio,

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is data.";
    try {
      //Crea un output stream
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      //Scrive i dati nell'output stream
      out.write(data.getBytes());
      //Restituisce un array di byte
      byte[] byteData = out.toByteArray();
      System.out.print("Utilizzando toByteArray() dei dati: ");
      for(int i=0; i<byteData.length; i++) {
        System.out.print((char)byteData[i]);
      }
      //Restituisce una stringa
      String stringData = out.toString();
      System.out.println("\nUtilizzando toString() dei dati: " + stringData);
      out.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Risultato di output

Dati utilizzati con toByteArray(): This is data.
Dati utilizzati con toString(): This is data.

Nel esempio sopra, abbiamo creato un array di byte per memorizzare i dati restituiti dal metodo toByteArray().

Poi usiamo un ciclo for per accedere a ogni byte dell'array. Qui, usiamo la conversione di tipo per convertire ogni byte nel carattere corrispondente.

Metodo close()

Per chiudere lo stream di output, possiamo utilizzare il metodo close().

Ma il metodo close() nella classe ByteArrayOutputStream non è valido. Anche se è stato chiamato il metodo close(), possiamo utilizzare i metodi di questo tipo.

Altri metodi di ByteArrayOutputStream

MetodoDescrizione del contenuto
size()Restituisci la dimensione dell'array nello stream di output
flush()Pulisci lo stream di output