Конструкторы и методы класса ByteArrayOutputStream


Поток класса ByteArrayOutputStream создает буфер в памяти, и все данные, отправленные в поток, хранятся в буфере.

Конструкторы
Ниже приведен список конструкторов, предоставляемых классом ByteArrayOutputStream.

№ Конструктор и описание
1 ByteArrayOutputStream()
Конструктор создает ByteArrayOutputStream с буфером в 32 байт.
2 ByteArrayOutputStream(int a)
Конструктор создает ByteArrayOutputStream с буфером заданного размера.
Методы
Если Вы используйте объект ByteArrayOutputStream, тогда у Вас всегда есть список вспомогательных методов, которые можно использовать для записи потока или для выполнения других операций над потоком.

№ Метод и описание
1 public void reset()
Метод сбрасывает количество действительных байт в выходном потоке байтового массива до нуля, поэтому все накопленное на выходе будет сброшено.
2 public byte[] toByteArray()
Метод создает недавно выделенный массив байтов. Его размер будет текущим размером выходного потока, и содержимое буфера будет скопировано в него. Возвращает текущее содержимое выходного потока в виде байтового массива.
3 public String toString()
Преобразует содержимое буфера в строку. Перевод будет выполняться в соответствии с кодировкой установленной по умолчанию. Возвращает строку, переведенную из содержимого буфера.
4 public void write(int w)
Запись указанного массива в выходной поток.
5 public void write(byte []b, int of, int len)
Запись len количества байтов, начиная смещение с of.
6 public void writeTo(OutputStream outSt)
Запись всего содержимого потока в указанный аргумент потока.
Пример
Ниже приведен пример демонстрации ByteArrayOutputStream и ByteArrayInputStream.

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