ByteArrayOutputStream создаёт буффер в памяти и все данные, отправленные в поток хранятся в нём.
Этот класс имеет такие методы:
- public void reset() throws IOException
Этот метод “сбрасывает” все байты, которые находятся в выходном массиве. В следствие этого, все байты в потоке будут сброшены. - public byte[] toByteArray() throws IOException
Этот метод создаёт новый массив байтов с размером, равным, количеству байтов в буффере. Все эти байты будут скопированы в него. Возвращает содержимое данного массива. - public String toString() throws IOException
Этот метод преобразует содержимое буффера в строку (String). преобразование будет выполнено в соответствии со стандартной кодировкой символов. Возвращает строку, проебразованную из содержимого буффера. - public void write(int w) throws IOException
Этот метод записывает указанный массив в выходной поток. - public void write (byte [] b), int off, int len) throws IOException
Этот метод записывает в выходной поток все байты с off до len. - public void writeTo(OutputStream outSt) throws IOException
Этот метод записывает всё содержимое потока в указанный поток.
Давайте рассмотрим, как это работает, на примере простого приложения.
Пример:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayOutputStreamDemo {
public static void main(String[] args) throws IOException{
ByteArrayOutputStream byteArrayOutputStream =
new ByteArrayOutputStream(20);
System.out.println("Enter the string: ");
while (byteArrayOutputStream.size() != 13){
byteArrayOutputStream.write(System.in.read());
}
byte[] byteArray = byteArrayOutputStream.toByteArray();
System.out.println("byteArray: ");
for(byte b: byteArray){
System.out.print((char)b);
}
System.out.println("\n=======================\n");
int i;
ByteArrayInputStream byteArrayInputStream =
new ByteArrayInputStream(byteArray);
System.out.println("Now we will convert all characters to lower case:");
while ((i = byteArrayInputStream.read())!= -1){
System.out.print(Character.toLowerCase((char)i));
}
byteArrayInputStream.reset();
}
}
В результате работы программы мы получим, примерно, следующий результат:
/*Some system messages*/
Enter the string:
THIS IS TEST
byteArray:
THIS IS TEST
=======================
Now we will convert all characters to lower case:
this is test
В это уроке мы изучили основы класса ByteArrayOutputStream и рассмотрели примеры простых приложений с его использованием.