Lớp FilterWriter
(Class FilterWriter)

Lớp FilterWriter là một lớp trừu tượng (abstract) trong Java thuộc gói java.io, được sử dụng làm cơ sở cho các lớp ghi dữ liệu ký tự có chức năng lọc dữ liệu khi ghi. lớp này cho phép bạn thực hiện các thao tác xử lý dữ liệu trước khi dữ liệu được ghi vào đích cuối cùng.

Lọc dữ liệu: Chuyển đổi chữ thường thành chữ hoa, loại bỏ các ký mã hóa đặc biệt, hoặc thực hiện các thao tác biến đổi khác trên dữ liệu trước khi ghi.

Khai báo lớp FilterWriter trong Java

Để sử dụng lớp FilterWriter, 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.FilterWriter;

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

Cú pháp

public abstract class FilterWriter
extends Writer

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

↳ public: Lớp FilterWriter có thể được truy cập từ bất kỳ đâu trong chương trình, miễn là nó nằm trong phạm vi của các package đã import.

↳ abstract: Lớp này là một lớp trừu tượng, có nghĩa là bạn không thể tạo ra đối tượng của lớp FilterWriter trực tiếp. Lớp này chỉ có thể được kế thừa bởi các lớp con khác. Các lớp con sẽ phải cung cấp các triển khai cụ thể cho các phương thức trừu tượng của lớp FilterWriter.

↳ class FilterWriter: Đây là tên của lớp, FilterWriter.

↳ extends Writer: Từ khóa extends cho biết rằng FilterWriter kế thừa từ lớp Writer. Lớp FilterWriter là một lớp con của lớp Writer, nghĩa là nó thừa hưởng tất cả các thuộc tính và phương thức của lớp Writer và có thể mở rộng hoặc ghi đè các phương thức đó để thêm chức năng hoặc thay đổi cách hoạt động của lớp cha.

Trường trong lớp FilterWriter

Lớp FilterWriter có một trường duy nhất là protected Writer out

↳ protected: Từ khóa protected chỉ ra rằng thuộc tính out có thể được truy cập từ các lớp con của PrintWriter và từ các lớp khác trong cùng một gói (package). Nó không thể được truy cập từ bên ngoài lớp hoặc gói nếu không phải là lớp con.

↳ Writer: Đây là kiểu dữ liệu của thuộc tính out. Writer là lớp cơ sở cung cấp các phương thức để ghi ký tự vào luồng đầu ra. PrintWriter sử dụng thuộc tính này để thực hiện các thao tác ghi dữ liệu.

↳ out: Đây là tên của thuộc tính. Trong trường hợp này, out đại diện cho luồng đầu ra thực tế mà PrintWriter ghi dữ liệu vào.

Constructor của lớp FilterWriters

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

↳ protected FilterWriter(Writer out): Tạo một đối tượng FilterWriter mới, bao bọc luồng ký tự out.

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

Lớp FilterWriter kế thừa các phương thức cơ bản từ lớp Writer để thực hiện việc ghi dữ liệu ký tự. Dưới đây là danh sách tất cả các phương thức của lớp Reader trong Java:

↳ void close(): Đóng luồng và giải phóng tài nguyên liên quan.

↳ void flush(): Buộc ghi dữ liệu đệm ra luồng đích.

↳ void write(char[] cbuf, int off, int len): Ghi một phần của một mảng ký tự vào luồng.

↳ void write(int c): Ghi một ký tự vào luồng.

↳ void write(String str, int off, int len): Ghi một phần của một chuỗi vào luồng.

Ví dụ

Dưới đây là một ví dụ khác đơn giản về việc sử dụng lớp FilterWriter. Trong ví dụ này, chúng ta sẽ tạo một lớp con của FilterWriter để viết dữ liệu vào luồng đầu ra và chuyển đổi tất cả các ký tự thành chữ hoa:

Ví dụ: Example.java

import java.io.FilterWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;

 class UpperCaseFilterWriter extends FilterWriter {

    protected UpperCaseFilterWriter(Writer out) {
        super(out);
    }

    @Override
    public void write(int c) throws IOException {
        super.write(Character.toUpperCase(c));  // Chuyển ký tự thành chữ hoa và ghi
    }

    @Override
    public void write(char[] cbuf, int off, int len) throws IOException {
        for (int i = off; i < off + len; i++) {
            cbuf[i] = Character.toUpperCase(cbuf[i]);  // Chuyển ký tự thành chữ hoa
        }
        super.write(cbuf, off, len);
    }
}
public class Example{
    
    public static void main(String[] args) {
        StringWriter stringWriter = new StringWriter();
        try (Writer writer = new UpperCaseFilterWriter(stringWriter)) {
            writer.write("Sau đây là một ví dụ đơn giản về FilterWriter.");
        } catch (IOException e) {
            e.printStackTrace();
        }

        // In nội dung đã ghi vào StringWriter
        System.out.println(stringWriter.toString());
    }
}

Kết quả của chương trình là:

SAU ĐÂY LÀ MỘT VI DỤ ĐƠN GIẢN VỀ FILTERWRITER

Ví dụ này cho thấy cách sử dụng lớp FilterWriter để thực hiện các thao tác chuyển đổi dữ liệu đầu ra, cụ thể là chuyển đổi tất cả các ký tự thành chữ hoa. Lớp UpperCaseFilterWriter cung cấp một cách đơn giản và hiệu quả để áp dụng các biến đổi dữ liệu khi ghi vào luồng đầu ra trong Java.

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.”