Java ByteArrayInputStream (с примерами)

В этом руководстве мы узнаем о Java ByteArrayInputStream и его методах с помощью примеров.

ByteArrayInputStreamКласс java.ioпакета может быть использован для чтения массива входных данных (в байтах).

Он расширяет InputStreamабстрактный класс.

Примечание . ByteArrayInputStreamВходной поток создается с использованием массива байтов. Он включает внутренний массив для хранения данных этого конкретного массива байтов.

Создайте ByteArrayInputStream

Чтобы создать поток ввода байтового массива, мы должны java.io.ByteArrayInputStreamсначала импортировать пакет. После того, как мы импортируем пакет, вот как мы можем создать входной поток.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Здесь мы создали входной поток, который считывает все данные из arrмассива. Однако мы также можем создать входной поток, который считывает только некоторые данные из массива.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

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

Методы ByteArrayInputStream

ByteArrayInputStreamКласс обеспечивает реализации для различных методов представления в InputStreamклассе.

read () Метод

  • read() - считывает один байт из массива, присутствующего во входном потоке
  • read(byte() array) - читает байты из входного потока и сохраняет в указанном массиве
  • read(byte() array, int start, int length) - считывает из потока количество байтов, равное длине, и сохраняет в указанном массиве, начиная с позиции start

Пример: ByteArrayInputStream для чтения данных

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Вывод

 Байты, прочитанные из входного потока: 1, 2, 3, 4, 

В приведенном выше примере мы создали входной поток байтового массива с именем input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Здесь входной поток включает все данные из указанного массива. Для чтения данных из входного потока мы использовали read()метод.

available () Метод

Чтобы получить количество доступных байтов во входном потоке, мы можем использовать available()метод. Например,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Вывод

 Доступных байтов в начале: 4 Доступных байтов в конце: 2 

В приведенном выше примере

  1. Мы использовали этот available()метод, чтобы проверить количество доступных байтов во входном потоке.
  2. Затем мы использовали этот read()метод 2 раза, чтобы прочитать 2 байта из входного потока.
  3. Теперь, прочитав 2 байта, мы проверили доступные байты. На этот раз количество доступных байтов уменьшилось на 2.

skip () Метод

Чтобы отбросить и пропустить указанное количество байтов, мы можем использовать skip()метод. Например,

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Вывод

 Входной поток после пропуска 2 байтов: 3, 4, 

В приведенном выше примере мы использовали метод skip (), чтобы пропустить 2 байта данных из входного потока. Следовательно, 1 и 2 не читаются из входного потока.

close () Метод

Чтобы закрыть входной поток, мы можем использовать close()метод.

Однако close()в ByteArrayInputStreamклассе этот метод не действует . Мы можем использовать методы этого класса даже после вызова close()метода.

Другие методы ByteArrayInputStream

Методы Описания
finalize() гарантирует, что close()метод вызывается
mark() отмечает позицию во входном потоке, до которой были прочитаны данные
reset() возвращает элемент управления в точку во входном потоке, где была установлена ​​метка
markSupported() проверяет, поддерживает ли входной поток mark()иreset()

Чтобы узнать больше, посетите Java ByteArrayInputStream (официальная документация Java).

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