Программа Java для преобразования InputStream в байтовый массив

В этом примере мы научимся преобразовывать входной поток в массив байтов в Java.

Чтобы понять этот пример, вы должны знать следующие темы программирования Java:

  • Класс Java InputStream
  • Класс Java ByteArrayInputStream
  • Класс Java ByteArrayOutputStream

Пример 1: Программа Java для преобразования InputStream в байтовый массив

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

Вывод

 Входной поток: java.io.ByteArrayInputStream@27082746 Массив байтов: (1, 2, 3, 4)

В приведенном выше примере мы создали входной поток с именем stream. Обратите внимание на строку,

 byte() array = stream.readAllBytes();

Здесь readAllBytes()метод возвращает все данные из потока и сохраняет их в массиве байтов.

Примечание . Мы использовали этот Arrays.toString()метод для преобразования всего массива в строку.

Пример 2: преобразование InputStream в массив байтов с использованием потока вывода

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

Вывод

 Входной поток: java.io.ByteArrayInputStream@27082746 Массив байтов: (1, 2, 3, 4)

В приведенном выше примере мы создали поток ввода из массива input. Обратите внимание на выражение,

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

Здесь все элементы из потока хранятся в массиве, начиная с индекса 0 . Затем мы сохраняем все элементы массива в поток вывода с именем output.

 output.write(array, 0, i)

Наконец, мы вызываем toByteArray()метод ByteArrayOutputStreamкласса, чтобы преобразовать выходной поток в массив байтов с именем data.

Интересные статьи...