Java - ByteArrayOutputStream

O fluxo da classe ByteArrayOutputStream cria um buffer na memória e todos os dados enviados para o fluxo são armazenados no buffer.

A seguir está a lista dos construtores a serem fornecidos pela classe ByteArrayOutputStream.

Sr. Não. Construtor e descrição
1

ByteArrayOutputStream()

Este construtor cria um ByteArrayOutputStream com buffer de 32 bytes.

2

ByteArrayOutputStream(int a)

Este construtor cria um ByteArrayOutputStream com buffer do tamanho fornecido.

Depois de ter o objeto ByteArrayOutputStream em mãos, há uma lista de métodos auxiliares que podem ser usados ​​para escrever o fluxo ou para fazer outras operações no fluxo.

Sr. Não. Método e Descrição
1

public void reset()

Este método redefine o número de bytes válidos do fluxo de saída da matriz de bytes para zero, de forma que toda a saída acumulada no fluxo seja descartada.

2

public byte[] toByteArray()

Este método cria uma nova matriz de bytes alocada. Seu tamanho seria o tamanho atual do fluxo de saída e o conteúdo do buffer será copiado para ele. Retorna o conteúdo atual do fluxo de saída como uma matriz de bytes.

3

public String toString()

Converte o conteúdo do buffer em uma string. A tradução será feita de acordo com a codificação de caracteres padrão. Retorna a String traduzida do conteúdo do buffer.

4

public void write(int w)

Grava a matriz especificada no fluxo de saída.

5

public void write(byte []b, int of, int len)

Grava o número de len de bytes começando do deslocamento até o fluxo.

6

public void writeTo(OutputStream outSt)

Grava todo o conteúdo deste Stream no argumento stream especificado.

Exemplo

A seguir está um exemplo para demonstrar ByteArrayOutputStream e ByteArrayInputStream.

import java.io.*;
public class ByteStreamTest {

   public static void main(String args[])throws IOException {
      ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);

      while( bOutput.size()!= 10 ) {
         // Gets the inputs from the user
         bOutput.write("hello".getBytes());  
      }
      byte b [] = bOutput.toByteArray();
      System.out.println("Print the content");
      
      for(int x = 0; x < b.length; x++) {
         // printing the characters
         System.out.print((char)b[x]  + "   "); 
      }
      System.out.println("   ");

      int c;
      ByteArrayInputStream bInput = new ByteArrayInputStream(b);
      System.out.println("Converting characters to Upper case " );
      
      for(int y = 0 ; y < 1; y++ ) {
         while(( c = bInput.read())!= -1) {
            System.out.println(Character.toUpperCase((char)c));
         }
         bInput.reset(); 
      }
   }
}

Aqui está o exemplo de execução do programa acima -

Resultado

Print the content
h   e   l   l   o   h   e   l   l   o      
Converting characters to Upper case 
H
E
L
L
O
H
E
L
L
O