Главная Войти О сайте

Класс ByteArrayInputStream

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

Конструкторы

Класс ByteArrayInputStream предоставляет следующие конструкторы.

Конструктор и описание
1ByteArrayInputStream(byte [] a)
Конструктор принимает байтовый массив как параметр.
2ByteArrayInputStream(byte [] a, int off, int len)
Конструктор принимает массив байтов и два целочисленных значения, где off – первый байт для чтения, а len – количество байтов, которые нужно cчитать.

Методы

Если используйте объект ByteArrayInputStream, то у Вас есть под рукой вспомогательные методы, которые можно использовать для чтения потока или для выполнения других операций над потоком.

Метод и описание
1public int read()
Метод считывает следующий байт данных из InputStream. Возвращает int как байт данных. Если это конец файла, он возвращает -1.
2public int read(byte[] r, int off, int len)
Метод считывает до len количество байт, начиная с off входного потока в массива. Возвращает общее количество прочитанных байтов. Если это конец файла, будет возвращен -1.
3public int available()
Получение количества байтов, которые могут быть прочитаны из этого потока ввода файла. Возвращает int, который получает количество прочитанных байтов.
4public void mark(int read)
Устанавливает текущую отмеченную позицию в потоке. Параметр возвращает максимальный предел байтов, который может быть прочитан до того, как помеченная позиция станет недействительной.
5public long skip(long n)
Пропускает 'n' количество байтов из потока. Возвращает фактическое количество пропущенных байтов.

Пример

Ниже приведен пример демонстрации классов ByteArrayInputStream и ByteArrayOutputStream.

import java.io.*;
public class TestByteStream {

   public static void main(String args[])throws IOException {
      ByteArrayOutputStream outputByte = new ByteArrayOutputStream(12);

      while(outputByte.size()!= 5) {
        outputByte.write("hello".getBytes()); 
      }
      byte a [] = outputByte.toByteArray();
      System.out.println("Вывод содержимого:");
      
      for(int i = 0 ; i < a.length; i++) {
         // Вывод символов
         System.out.print((char)a[i] + " "); 
      }
      System.out.println();
      
      int b;
      ByteArrayInputStream inputByte = new ByteArrayInputStream(a);
      System.out.println("Преобразование символов в верхний регистр:" );
      
      for(int j = 0 ; j < 1; j++) {
         while(( b = inputByte.read())!= -1) {
            System.out.println(Character.toUpperCase((char)b));
         }
         inputByte.reset(); 
      }
   }
}

Получим следующий результат:

Вывод содержимого:
h e l l o 
Преобразование символов в верхний регистр:
H
E
L
L
O

4Java.ru