Руководство по Java Core. Файлы и работа с ними. ByteArrayOutputStream.

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 и рассмотрели примеры простых приложений с его использованием.