Programa Java para converter InputStream em Byte Array

Neste exemplo, aprenderemos a converter um fluxo de entrada na matriz de bytes em Java.

Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Java:

  • Classe Java InputStream
  • Classe Java ByteArrayInputStream
  • Classe Java ByteArrayOutputStream

Exemplo 1: Programa Java para converter InputStream em Byte Array

 import java.io.InputStream; import java.util.Arrays; import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( try ( // create an input stream byte() input = (1, 2, 3, 4); InputStream stream = new ByteArrayInputStream(input); System.out.println("Input Stream: " + stream); // convert the input stream to byte array byte() array = stream.readAllBytes(); System.out.println("Byte Array: " + Arrays.toString(array)); stream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )

Resultado

 Fluxo de entrada: java.io.ByteArrayInputStream@27082746 Matriz de bytes: (1, 2, 3, 4)

No exemplo acima, criamos um fluxo de entrada denominado stream. Observe a linha,

 byte() array = stream.readAllBytes();

Aqui, o readAllBytes()método retorna todos os dados do fluxo e os armazena na matriz de bytes.

Nota : Usamos o Arrays.toString()método para converter todo o array em uma string.

Exemplo 2: Converter InputStream em Byte Array usando Output Stream

 import java.io.InputStream; import java.util.Arrays; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class Main ( public static void main(String args()) ( try ( // create an input stream byte() input = (1, 2, 3, 4); InputStream stream = new ByteArrayInputStream(input); System.out.println("Input Stream: " + stream); // create an output stream ByteArrayOutputStream output = new ByteArrayOutputStream(); // create a byte array to store input stream byte() array = new byte(4); int i; // read all data from input stream to array while ((i = stream.read(array, 0, array.length)) != -1) ( // write all data from array to output output.write(array, 0, i); ) byte() data = output.toByteArray(); // convert the input stream to byte array System.out.println("Byte Array: " + Arrays.toString(data)); stream.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )

Resultado

 Fluxo de entrada: java.io.ByteArrayInputStream@27082746 Matriz de bytes: (1, 2, 3, 4)

No exemplo acima, criamos um fluxo de entrada a partir da entrada do array. Observe a expressão,

 stream.read(array, 0, array.length)

Aqui, todos os elementos de stream são armazenados em array, começando no índice 0 . Em seguida, armazenamos todos os elementos do array no fluxo de saída denominado output.

 output.write(array, 0, i)

Por fim, chamamos o toByteArray()método da ByteArrayOutputStreamclasse para converter o fluxo de saída em uma matriz de bytes chamada data.

Artigos interessantes...