Java - ByteArrayInputStream

A classe ByteArrayInputStream permite que um buffer na memória seja usado como um InputStream. A fonte de entrada é uma matriz de bytes.

A classe ByteArrayInputStream fornece os seguintes construtores.

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

ByteArrayInputStream(byte [] a)

Este construtor aceita uma matriz de bytes como parâmetro.

2

ByteArrayInputStream(byte [] a, int off, int len)

Este construtor leva uma matriz de bytes e dois valores inteiros, onde off é o primeiro byte a ser lido e len é o número de bytes a serem lidos.

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

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

public int read()

Este método lê o próximo byte de dados do InputStream. Retorna um int como o próximo byte de dados. Se for o fim do arquivo, retorna -1.

2

public int read(byte[] r, int off, int len)

Este método lê até len número de bytes a partir de offdo fluxo de entrada em uma matriz. Retorna o número total de bytes lidos. Se for o fim do arquivo, -1 será retornado.

3

public int available()

Fornece o número de bytes que podem ser lidos desse fluxo de entrada de arquivo. Retorna um int que fornece o número de bytes a serem lidos.

4

public void mark(int read)

Isso define a posição atual marcada no fluxo. O parâmetro fornece o limite máximo de bytes que podem ser lidos antes que a posição marcada se torne inválida.

5

public long skip(long n)

Salta 'n' número de bytes do fluxo. Isso retorna o número real de bytes ignorados.

Exemplo

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

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(); 
      }
   }
}

A seguir 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