35. ByteArrayInputStream trong lập trình java

Trong lập trình Java, ByteArrayInputStream là một lớp kế thừa từ lớp InputStream, nó cho phép đọc dữ liệu từ một mảng byte như một nguồn dữ liệu đầu vào (input stream). Với ByteArrayInputStream, bạn có thể đọc dữ liệu từ mảng byte mà không cần tạo tệp thực tế hoặc kết nối mạng.

Constructor của ByteArrayInputStream nhận vào một mảng byte và sẽ tạo một luồng (stream) để đọc dữ liệu từ mảng này.

Dưới đây là cú pháp của lớp ByteArrayInputStream:

java
public class ByteArrayInputStream extends InputStream {
    // Constructors:
    public ByteArrayInputStream(byte[] buf)
    public ByteArrayInputStream(byte[] buf, int offset, int length)
    
    // Methods:
    public int read()
    public int read(byte[] b, int off, int len)
    public long skip(long n)
    public int available()
    public void reset()
    public void close()
}

Một số phương thức quan trọng của ByteArrayInputStream:

  1. read(): Phương thức này được sử dụng để đọc một byte từ ByteArrayInputStream. Nó sẽ trả về giá trị byte là một số nguyên từ 0 đến 255 hoặc -1 nếu đã đọc đến cuối luồng.
  2. read(byte[] b, int off, int len): Phương thức này đọc tối đa len byte từ luồng và lưu chúng vào mảng b bắt đầu từ vị trí off. Nó sẽ trả về số byte đã đọc được hoặc -1 nếu đã đọc đến cuối luồng.
  3. skip(long n): Phương thức này bỏ qua n byte trong luồng.
  4. available(): Phương thức này trả về số byte có thể đọc từ luồng mà không bị chặn.
  5. reset(): Phương thức này đặt con trỏ của luồng về đầu luồng.
  6. close(): Phương thức này đóng luồng và giải phóng tài nguyên hệ thống liên quan.

Dưới đây là một ví dụ minh họa về việc sử dụng ByteArrayInputStream:

java
import java.io.ByteArrayInputStream;

public class ByteArrayInputStreamExample {
    public static void main(String[] args) {
        byte[] data = { 72, 101, 108, 108, 111, 32, 74, 97, 118, 97 };
        ByteArrayInputStream inputStream = new ByteArrayInputStream(data);

        int byteRead;
        while ((byteRead = inputStream.read()) != -1) {
            char character = (char) byteRead;
            System.out.print(character);
        }

        inputStream.close();
    }
}

Đoạn mã trên tạo một ByteArrayInputStream từ một mảng byte và sau đó đọc từng byte từ luồng và in ra ký tự tương ứng. Output sẽ là: “Hello Java”.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top