betacode

Руководство Java ByteArrayOutputStream

  1. ByteArrayOutputStream
  2. Constructors
  3. Methods
  4. Examples

1. ByteArrayOutputStream

ByteArrayOutputStream - это подкласс OutputStream. Верный своему названию, ByteArrayOutputStream используется для записи bytes в массив byte, который управляется способом OutputStream.
bytes, записанные в ByteArrayOutputStream, будут назначены элементам массива byte, которым управляет ByteArrayOutputStream.
Если количество bytes, записанных в ByteArrayOutputStream, больше длины массива, ByteArrayOutputStream создаст новый массив большей длины и скопирует bytes из старого массива.

2. Constructors

Constructors
public ByteArrayOutputStream()  

public ByteArrayOutputStream(int initialSize)
  • Конструктор ByteArrayOutputStream(int) создает объект ByteArrayOutputStream с массивом byte, имеющим заданный начальный размер.
  • Конструктор ByteArrayOutputStream() создает объект ByteArrayOutputStream с массивом byte, который имеет размер по умолчанию (32).

3. Methods

Все методы of ByteArrayOutputStream наследуются от его родительского класса - OutputStream.
void close()  
void reset()  
int size()  

byte[] toByteArray()  
String toString()  
String toString​(String charsetName)  
String toString​(Charset charset)  

void write​(byte[] b, int off, int len)  
void write​(int b)  
void writeBytes​(byte[] b)  

void writeTo​(OutputStream out)
Дополнительные примеры этих методов см. в статье об OutputStream.

4. Examples

ByteArrayOutputStreamEx1.java
package org.o7planning.bytearrayoutputstream.ex;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class ByteArrayOutputStreamEx1 {

    public static void main(String[] args) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
        
        byte[] bytes1 = new byte[] {'H', 'e'};
        
        baos.write(bytes1);
        
        baos.write(108); // 'l'
        baos.write('l'); // code: 108
        baos.write('o'); // code: 111

        byte[] buffer = baos.toByteArray();
        
        for(byte b: buffer)  {
            System.out.println(b + " --> " + (char)b);
        }
    }
}
Output:
72 --> H
101 --> e
108 --> l
108 --> l
111 --> o
Например, добавим 2 массива byte, чтобы создать новый массив.
ByteArrayOutputStreamEx3.java
package org.o7planning.bytearrayoutputstream.ex;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class ByteArrayOutputStreamEx3 {

    public static void main(String[] args) throws IOException {
        byte[] arr1 = "Hello ".getBytes();
        byte[] arr2 = new byte[] {'W', 'o', 'r', 'l', 'd', '!'};
        
        byte[] result = add(arr1, arr2);
        
        for(byte b: result)  {
            System.out.println(b + " " + (char)b);
        }
    }

    public static byte[] add(byte[] arr1, byte[] arr2) {
        if (arr1 == null) {
            return arr2;
        }
        if (arr2 == null) {
            return arr1;
        }
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            baos.write(arr1);
            baos.write(arr2);
        } catch (Exception e) {
            // Never happened!
        }
        return baos.toByteArray();
    }
}
Output:
72 H
101 e
108 l
108 l
111 o
32  
87 W
111 o
114 r
108 l
100 d
33 !
В принципе, большинство методов ByteArrayOutputStream наследуются от OutputStream, поэтому вы можете найти дополнительные примеры использования этих методов в статье ниже:

Руководства Java IO

Show More