Lớp PrintWriter
(Class PrintWriter)

Lớp PrintWriter trong Java là một lớp con tiện ích của lớp Write thuộc gói java.io dùng để ghi ký tự vào một luồng đầu ra văn bản. Nó cung cấp các phương thức dễ sử dụng để ghi các kiểu dữ liệu khác nhau như số nguyên, số thực, chuỗi, và các đối tượng khác một cách dễ dàng. Ngoài ra, lớp PrintWriter cũng hỗ trợ các tính năng như tự động xóa bộ đệm và ghi ra các kiểu dữ liệu khác nhau.

Khai báo lớp PrintWriter trong Java

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

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

Cú pháp

public class PrintWriter
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 PrintWriter có thể được truy cập từ bất kỳ đâu trong mã nguồn.

↳ class PrintWriter: Đây là khai báo của một lớp có tên là PrintWriter.

↳ extends Writer: Từ khóa extends cho thấy rằng lớp PrintWriter kế thừa từ lớp Writer. Điều này có nghĩa là PrintWriter thừa hưởng tất cả các phương thức và thuộc tính của lớp Writer, đồng thời có thể mở rộng và bổ sung các phương thức mới.

Trường trong lớp PrintWriter

Lớp PrintWriter 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.

Các Constructor của lớp PrintWriter

Lớp PrintWriter cung cấp nhiều constructor để tạo đối tượng và thiết lập các tùy chọn khác nhau:

↳ PrintWriter(File file): Tạo một PrintWriter mới để ghi vào file được chỉ định, không tự động flush.

↳ PrintWriter(File file, String csn): Tạo một PrintWriter mới với mã hóa ký tự csn để ghi vào file được chỉ định, không tự động flush.

↳ PrintWriter(OutputStream out): Tạo một PrintWriter mới từ một luồng đầu ra hiện có, không tự động flush.

↳ PrintWriter(OutputStream out, boolean autoFlush): Tạo một PrintWriter mới từ một luồng đầu ra hiện có, với tùy chọn tự động flush.

↳ PrintWriter(String fileName): Tạo một PrintWriter mới để ghi vào file có tên fileName, không tự động flush.

↳ PrintWriter(String fileName, String csn): Tạo một PrintWriter mới với mã hóa ký tự csn để ghi vào file có tên fileName, không tự động flush.

↳ PrintWriter(Writer out): Tạo một PrintWriter mới từ một luồng ký tự hiện có, không tự động flush.

↳ PrintWriter(Writer out, boolean autoFlush): Tạo một PrintWriter mới từ một luồng ký tự hiện có, với tùy chọn tự động flush.

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

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

Phương thứcMô tả
PrintWriter append(char c)Nối thêm một ký tự vào luồng.
PrintWriter append(CharSequence csq)Nối thêm một chuỗi ký tự vào luồng.
PrintWriter append(CharSequence csq, int start, int end)Nối thêm một phần của chuỗi ký tự vào luồng.
boolean checkError()Kiểm tra xem có lỗi xảy ra trong quá trình ghi hay không.
protected void clearError()Xóa trạng thái lỗi của luồng.
void close()Đóng luồng và giải phóng tài nguyên hệ thống liên quan.
void flush()Buộc ghi dữ liệu đệm ra luồng đích.
PrintWriter format(Locale l, String format, Object... args)In một chuỗi định dạng theo định dạng và đối số được chỉ định.
PrintWriter format(String format, Object... args)In một chuỗi định dạng theo định dạng và đối số được chỉ định.
void print(boolean b)In giá trị boolean.
void print(char c)In một ký tự.
void print(char[] s)In một mảng ký tự.

Các phương thức print() chỉ đơn giản in dữ liệu vào luồng mà không thêm ký tự xuống dòng.

Phương thứcMô tả
print(boolean b)In giá trị boolean.
print(char c)In một ký tự.
print(char[] s)In một mảng ký tự.
print(double d)In một số thực dấu chấm động kép.
print(float f)In một số thực dấu chấm động đơn.
print(int i)In một số nguyên.
print(long l)In một số nguyên dài.
print(Object obj)In một đối tượng bất kỳ (sử dụng phương thức toString() của đối tượng).
print(String s)In một chuỗi.

Các phương thức println() tương tự như các phương thức print() nhưng thêm một ký tự xuống dòng sau khi in dữ liệu.

Phương thứcMô tả
void println()In một ký tự xuống dòng.
void println(boolean x)In giá trị boolean và một ký tự xuống dòng.
void println(char x)In một ký tự và một ký tự xuống dòng.
void println(char[] x)In một mảng ký tự và một ký tự xuống dòng.
void println(double x)In một số thực dấu chấm động kép và một ký tự xuống dòng.
void println(float x)In một số thực dấu chấm động đơn và một ký tự xuống dòng.
void println(int x)In một số nguyên và một ký tự xuống dòng.
void println(long x)In một số nguyên dài và một ký tự xuống dòng.
void println(Object x)In một đối tượng (sử dụng phương thức toString() của đối tượng) và sau đó xuống dòng.
void println(String x)In một chuỗi và sau đó xuống dòng.
protected void setError()Đánh dấu rằng đã xảy ra lỗi trong quá trình ghi.
void write(char[] buf)Viết toàn bộ mảng ký tự buf vào luồng.
void write(char[] buf, int off, int len)Viết một phần của mảng ký tự buf vào luồng.
void write(int c)Viết một ký tự vào luồng.
void write(String s)Viết toàn bộ chuỗi s vào luồng.
void write(String s, int off, int len)Viết một phần của chuỗi s vào luồng.

Ví dụ

Dưới đây là một ví dụ về cách sử dụng lớp PrintWriter để định dạng và ghi dữ liệu vào một tệp tin:

Giả sử bạn có một tệp tin tên là Example.txt bạn muốn ghi dữ liệu vào tập tin đó.

Ví dụ 1: Sử dụng PrintWriter với print và println:

Ví dụ: Example.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Example {
    public static void main(String[] args) {
        try {
            // Tạo một PrintWriter để ghi vào file
            PrintWriter writer = new PrintWriter(new FileWriter("Example.txt"));

            // Sử dụng print và println
            writer.print("Đây là dòng đầu tiên. ");
            writer.println("Đây là dòng tiếp theo.");
            writer.println("Đây là dòng cuối cùng.");

            // Đóng writer
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Khi chạy chương trình, một tệp tin tên là Example.txt sẽ được tạo ra với nội dung:

Đây là dòng đầu tiên. Đây là dòng tiếp theo.
Đây là dòng cuối cùng.

Ví dụ 2: Sử dụng printf để định dạng chuỗi:

Ví dụ: Example.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Example {
    public static void main(String[] args) {
        try {
            // Tạo một PrintWriter để ghi vào file
            PrintWriter writer = new PrintWriter(new FileWriter("Example.txt"));

            // Sử dụng printf với định dạng
            writer.printf("Xin chào, %s! Số của bạn là %d.\n", "Java", 100);
            writer.printf("Số thập phân với hai chữ số sau dấu phẩy: %.2f\n", 3.14159);
            writer.printf("%-10s %10s\n", "Trái cây", "Giá");
            writer.printf("%-10s %10.2f\n", "Táo", 3.50);
            writer.printf("%-10s %10.2f\n", "Cam", 4.20);

            // Đóng writer
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Khi chạy chương trình, một tệp tin tên là Example.txt sẽ được tạo ra với nội dung:

Đây là dòng đầu tiên. Đây là dòng tiếp theo.
Xin chào, Java! Số của bạn là 100.
Số thập phân với hai chữ số sau dấu phẩy: 3.14
Trái cây         Giá
Táo              3.50
Cam            4.20

Ví dụ 3: Sử dụng format để định dạng dữ liệu:

Ví dụ: Example.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Example {
    public static void main(String[] args) {
        try {
            // Tạo một PrintWriter để ghi vào file
            PrintWriter writer = new PrintWriter(new FileWriter("Example.txt"));

            // Sử dụng format với định dạng
            writer.format("Ngày hôm nay là %s, và nhiệt độ là %.1f độ C.\n", "Thứ Hai", 25.6);
            writer.format("%-15s %5s\n", "Sản phẩm", "Số lượng");
            writer.format("%-15s %5d\n", "Bánh mì", 12);
            writer.format("%-15s %5d\n", "Sữa", 7);

            // Đóng writer
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Khi chạy chương trình, một tệp tin tên là Example.txt sẽ được tạo ra với nội dung:

Ngày hôm nay là Thứ Hai, và nhiệt độ là 25.6 độ C.
Sản phẩm          Số lượng
Bánh mì                 12
Sữa                        7

Ví dụ 4: Sử dụng PrintWriter để ghi dữ liệu có cấu trúc vào file:

Ví dụ: Example.java

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Example {
    public static void main(String[] args) {
        try {
            // Tạo một PrintWriter để ghi vào file
            PrintWriter writer = new PrintWriter(new FileWriter("Example.txt"));

            // Tiêu đề của bảng
            writer.printf("%-10s %10s %10s\n", "Tên", "Tuổi", "Điểm số");
            writer.printf("%-10s %10s %10s\n", "==========", "==========", "==========");

            // Dữ liệu
            writer.printf("%-10s %10d %10.2f\n", "Lan", 22, 8.75);
            writer.printf("%-10s %10d %10.2f\n", "Hoàng", 19, 7.85);
            writer.printf("%-10s %10d %10.2f\n", "Phúc", 20, 9.10);

            // Đóng writer
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Khi chạy chương trình, một tệp tin tên là Example.txt sẽ được tạo ra với nội dung:

Đây là dòng đầu tiên. Đây là dòng tiếp theo.
Tên                               Tuổi         Điểm số
========== ========== ==========
Lan                                 22                8.75
Hoàng                            19                7.85
Phúc                              20                9.10

Các ví dụ trên cho thấy cách bạn có thể sử dụng PrintWrite để thực hiện các thao tác ghi và định dạng dữ liệu vào tập tin trong Java.

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

“Không ai sinh ra đã giỏi. Mọi thành công đều bắt đầu từ một bước nhỏ.” – Lao Tzu

Không Gian Tích Cực

“Chúc bạn một ngày mới đầy năng lượng và sự sáng tạo, luôn tiến về phía trước.”