openplanning

Hướng dẫn và ví dụ Java ByteArrayOutputStream

Xem thêm các chuyên mục:

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- ByteArrayOutputStream

ByteArrayOutputStream là một lớp con của OutputStream. Đúng với cái tên, ByteArrayOutputStream được sử dụng để ghi các bytes vào một mảng byte mà nó quản lý theo cách của một OutputStream.
Các bytes được ghi vào ByteArrayOutputStream sẽ được gán vào các phần tử của mảng byteByteArrayOutputStream quản lý.
Khi số lượng các bytes  ghi vào ByteArrayOutputStream lớn hơn độ dài của mảng, ByteArrayOutputStream sẽ tạo một mảng mới với độ dài lớn hơn và copy các bytes từ mảng cũ sang.

2- Constructors

Constructors

public ByteArrayOutputStream()  

public ByteArrayOutputStream(int initialSize)
  • Constructor ByteArrayOutputStream(int) tạo ra một đối tượng ByteArrayOutputStream với mảng byte có kích thước ban đầu chỉ định.
  • Constructor ByteArrayOutputStream() tạo ra một đối tượng ByteArrayOutputStream với mảng byte có kích thước mặc định (32).

3- Methods

Tất cả các phương thức của ByteArrayOutputStream đều được thừa kế từ lớp cha của nó - 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)
Xem bài viết về OutputStream để có thêm các ví dụ về các phương thức này.

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
Ví dụ, cộng 2 mảng byte để tạo ra một mảng mới.
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 !
Về cơ bản hầu hết các phương thức của ByteArrayOutputStream đều thừa kế từ OutputStream, vì vậy bạn có thể tìm thấy nhiều ví dụ hơn về cách sử dụng các phương thức này trong bài viết dưới đây:

Xem thêm các chuyên mục: