Lớp FilterOutputStream
(Class FilterOutputStream)

FilterOutputStream là một lớp trừu tượng kế thừa từ output stream trong Java có chức năng lọc hoặc biến đổi dữ liệu trong Java. Nó hoạt động như một lớp trung gian giữa ứng dụng và luồng đầu ra cơ bản (underlying output stream).

Lớp FilterOutputStream tự ghi đè tất cả các phương thức của OutputStream với các phiên bản chuyển tiếp tất cả các yêu cầu đến luồng đầu ra nền tảng. Các lớp con của FilterOutputStream có thể ghi đè thêm một số phương thức này cũng như cung cấp thêm các phương thức và trường dữ liệu để mở rộng chức năng.

Khai báo lớp FilterOutputStream trong Java

Để sử dụng lớp FilterOutputStream, bạn cần import gói java.io bạn cần thêm câu lệnh import vào đầu file Java của mình. Gói này cung cấp các lớp và giao diện để thực hiện các hoạt động nhập xuất (I/O) trong Java.

Cú pháp câu lệnh import:

Cú pháp

import java.io.FilterOutputStream;

Cú pháp khai báo lớp FilterOutputStream:

Cú pháp

public class FilterOutputStream
extends OutputStream

Dưới đây là giải thích chi tiết về cú pháp khai báo này:

↳ public class FilterOutputStream: Đây là khai báo một lớp công khai (public) tên là FilterOutputStream. Lớp này có thể được truy cập từ bất kỳ đâu trong dự án Java, miễn là nó được import hoặc ở cùng gói.

↳ extends OutputStream: Lớp FilterOutputStream kế thừa từ lớp OutputStream. OutputStream là một lớp cơ sở trừu tượng trong Java đại diện cho một luồng dữ liệu đầu ra. Nó cung cấp các phương thức để ghi dữ liệu vào một đích (như file, mạng, v.v.).

Trường của lớp FilterOutputStream

Lớp FilterOutputStream có một trường duy nhất:

↳ protected OutputStream out: Là một đối tượng OutputStream được bảo vệ (protected). Đại diện cho luồng đầu ra cơ bản mà FilterOutputStream sử dụng để ghi dữ liệu. Các phương thức của FilterOutputStream thường chuyển tiếp các yêu cầu ghi dữ liệu đến out.

Lưu ý: Trường out không thể được truy cập trực tiếp từ bên ngoài lớp FilterOutputStream. Các lớp con của FilterOutputStream có thể sử dụng trường out để thực hiện các xử lý dữ liệu của riêng chúng.

Constructor của lớp FilterOutputStream

Lớp FilterOutputStream có một constructor duy nhất:

↳ FilterOutputStream(OutputStream out): Tạo một đối tượng FilterOutputStream sử dụng luồng đầu ra cơ bản (underlying output stream) được chỉ định. Lưu trữ tham chiếu đến luồng đầu ra cơ bản để sử dụng trong các phương thức ghi dữ liệu

Lưu ý: FilterOutputStream là một lớp trừu tượng, không thể tạo đối tượng trực tiếp. Các lớp con của FilterOutputStream sử dụng constructor này để khởi tạo đối tượng và cung cấp luồng đầu ra cơ bản.

Các phương thức của lớp FilterOutputStream

Lớp FilterOutputStream cung cấp các phương thức cơ bản để ghi dữ liệu vào luồng đầu ra. Dưới đây là danh sách tất cả các phương thức của lớp FilterOutputStream trong Java:

↳ void write(byte[] b): Ghi toàn bộ mảng byte vào luồng đầu ra.

↳ tvoid write(byte[] b, int off, int len): Ghi một phần của mảng byte vào luồng đầu ra, bắt đầu từ vị trí off và có độ dài len.

↳ void write(int b): Ghi một byte vào luồng đầu ra.

↳ void flush(): Xả dữ liệu đệm ra luồng đầu ra.

↳ void close(): Đóng luồng đầu ra và giải phóng tài nguyên.

Ví dụ

Dưới đây là một ví dụ đơn giản về cách sử dụng FilterOutputStream thông qua một lớp con:

Ví dụ: Example.java

import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;

class UpperCaseFilterOutputStream extends FilterOutputStream {

    protected UpperCaseFilterOutputStream(OutputStream out) {
        super(out);
    }

    @Override
    public void write(int b) throws IOException {
        // Chuyển đổi ký tự thành chữ hoa trước khi ghi
        super.write(Character.toUpperCase(b));
    }

    @Override
    public void write(byte[] b, int off, int len) throws IOException {
        // Chuyển đổi các byte thành chữ hoa trước khi ghi
        for (int i = off; i < off + len; i++) {
            b[i] = (byte) Character.toUpperCase(b[i]);
        }
        super.write(b, off, len);
    }

    public static void main(String[] args) throws IOException {
        String input = "Hello, World!";
        try (OutputStream out = new UpperCaseFilterOutputStream(new java.io.FileOutputStream("output.txt"))) {
            out.write(input.getBytes());
        }
    }
}

Khi chương trình chạy thành công, tệp output.txt sẽ chứa nội dung như sau:

HELLO, WORLD!

Lớp FilterOutputStream giúp mở rộng khả năng của các luồng đầu ra bằng cách cho phép bạn thực hiện các thao tác bổ sung khi ghi dữ liệu. Cho phép thêm các chức năng bổ sung hoặc xử lý dữ liệu đầu ra mà không thay đổi luồng đầu ra gốc.

Câu Nói Truyền Cảm Hứng

“Bắt đầu ở đâu không quan trọng, quan trọng là bạn sẵn sàng bắt đầu.” – W. Clement Stone

Không Gian Tích Cực

“Chúc bạn luôn giữ vững niềm tin và sức mạnh để vượt qua mọi thử thách trong cuộc sống.”