English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений в Java

Java Список (List)

Java Queue (очередь)

Java Map-сборник

Java Set-сборник

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Java-программа преобразует InputStream в массив байт (bytearray)

Java полный список примеров

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

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

Пример 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 {
      //Создание входного потока
      byte[] input = {1, 2, 3, 4};
      InputStream stream = new ByteArrayInputStream(input);
      System.out.println("Входной поток: " + stream);
      //Преобразование входного потока в массив байтов
      byte[] array = stream.readAllBytes();
      System.out.println("Байтовый массив: " + Arrays.toString(array))
      stream.close();
    }
    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

Результат вывода

Input Stream: java.io.ByteArrayInputStream@27082746
Байтовый массив: [1, 2, 3, 4]

В предыдущем примере мы создали входной поток (InputStream) под названием 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 {
      //Создание входного потока
      byte[] input = {1, 2, 3, 4};
      InputStream stream = new ByteArrayInputStream(input);
      System.out.println("Входной поток: " + stream);
      //Создание потока вывода
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      //Создание массива байтов для хранения входного потока
      byte[] array = new byte[4];
      int i;
      //Чтение всех данных из входного потока в массив
      while ((i = stream.read(array, 0, array.length)) != -1) {
        //Запись всех данных массива в вывод
        output.write(array, 0, i);
      }
      byte[] data = output.toByteArray();
      //Преобразование входного потока в массив байтов
      System.out.println("Байтовый массив: " + Arrays.toString(data));
      stream.close();
    }
    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

Результат вывода

Input Stream: java.io.ByteArrayInputStream@27082746
Byte Array: [1, 2, 3, 4]

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

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

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

output.write(array, 0, i)

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

Java полный список примеров