Програма 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)

У наведеному вище прикладі ми створили вхідний потік із вводу масиву. Зверніть увагу на вираз,

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

Тут усі елементи потоку зберігаються в масиві, починаючи з індексу 0 . Потім ми зберігаємо всі елементи масиву у вихідному потоці з іменем output.

 output.write(array, 0, i)

Нарешті, ми називаємо toByteArray()метод ByteArrayOutputStreamкласу, щоб перетворити вихідний потік в байтовий масив з іменем data.

Цікаві статті...