Trong hướng dẫn này, chúng ta sẽ tìm hiểu về lớp Java PrintStream và các phương thức print () và printf () của nó với sự trợ giúp của các ví dụ.

lớp PrintStream của gói java.io có thể được sử dụng để ghi dữ liệu đầu ra ở dạng thường có thể đọc được (text) thay vì byte.

Nó mở rộng lớp trừu tượng OutputStream.

1. Hoạt động của PrintStream

Không giống như các luồng đầu ra khác, luồng PrintStream chuyển đổi dữ liệu nguyên thủy (số nguyên, ký tự) thành định dạng văn bản thay vì byte. Sau đó, nó ghi dữ liệu được định dạng đó vào luồng đầu ra.

Ngoài ra, lớp PrintStream không ném bất kỳ ngoại lệ đầu vào / đầu ra nào. Thay vào đó, chúng ta cần sử dụng phương thức checkError() để tìm bất kỳ lỗi nào trong đó.

Lưu ý :Lớp PrintStream cũng có tính năng tự động xả nước. Điều này có nghĩa là nó buộc luồng đầu ra ghi tất cả dữ liệu vào đích theo một trong các điều kiện sau:

  • nếu ký tự dòng mới \n được viết trong dòng in
  • nếu phương thức println() được gọi
  • nếu một mảng byte được viết trong luồng in

2. Tạo luồng in

Để tạo một PrintStream, trước tiên chúng ta phải nhập gói java.io.PrintStream. Khi chúng tôi nhập gói ở đây là cách chúng tôi có thể tạo luồng in.

1. Sử dụng các luồng đầu ra khác

// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream(String file);

// Creates a PrintStream
PrintStream output = new PrintStream(file, autoFlush);

Đây,

  • chúng tôi đã tạo một luồng in sẽ ghi dữ liệu được định dạng vào tệp được đại diện bởi FileOutputStream
  • các autoFlush là một tham số boolean tùy chọn chỉ định có thực hiện xả tự động hay không

2. Sử dụng tên tệp

 // Creates a PrintStream
PrintStream output = new PrintStream(String file, boolean autoFlush);

Đây,

  • chúng tôi đã tạo một luồng in sẽ ghi dữ liệu được định dạng vào tệp được chỉ định
  • autoFlush là một tham số boolean tùy chọn chỉ định có thực hiện autoflush hay không

Lưu ý : Trong cả hai trường hợp, PrintStream dữ liệu ghi vào tệp bằng cách sử dụng một số mã hóa ký tự mặc định. Tuy nhiên, chúng tôi cũng có thể chỉ định mã hóa ký tự ( UTF8 hoặc UTF16 ).

// Creates a PrintStream using some character encoding
PrintStream output = new PrintStream(String file, boolean autoFlush, Charset cs);

Ở đây, chúng tôi đã sử dụng lớp Charset để chỉ định mã hóa ký tự. Để tìm hiểu thêm, hãy truy cập Java Charset (tài liệu Java chính thức) .

3. Các phương thức của PrintStream

Các lớp PrintStream cung cấp phương pháp khác nhau mà cho phép chúng tôi để in dữ liệu đến đầu ra.

3.1. Phương thức print()

  • print() – in dữ liệu được chỉ định vào luồng đầu ra
  • println() – in dữ liệu ra luồng đầu ra cùng với một ký tự dòng mới ở cuối

3.2 Ví dụ: phương thức print () với lớp Hệ thống

class Main {
    public static void main(String[] args) {

        String data = "Hello World.";
        System.out.print(data);
    }
}

Đầu ra

Hello World.

Trong ví dụ trên, chúng tôi chưa tạo luồng in. Tuy nhiên, chúng ta có thể sử dụng phương thức print() của lớp PrintStream.

Bạn có thể tự hỏi làm thế nào điều này là có thể. Hãy để tôi giải thích những gì đang xảy ra ở đây.

Lưu ý dòng,

System.out.print(data);

Đây,

  • System là lớp cuối cùng chịu trách nhiệm thực hiện hoạt động đầu vào / đầu ra tiêu chuẩn
  • out là một biến lớp của PrintStream kiểu được khai báo trong lớp System 

Bây giờ vì out là kiểu PrintStream, chúng ta có thể sử dụng nó để gọi tất cả các phương thức của lớp PrintStream.

3.3 Ví dụ: phương thức print () với lớp PrintStream

import java.io.PrintStream;

class Main {
    public static void main(String[] args) {

        String data = "This is a text inside the file.";

        try {
            PrintStream output = new PrintStream("output.txt");

            output.print(data);
            output.close();
        }
        catch(Exception e) {
            e.getStackTrace();
        }
    }
}

Trong ví dụ trên, chúng tôi đã tạo một luồng in có tên đầu ra. Luồng in được liên kết với tệp output.txt .

PrintStream output = new PrintStream("output.txt");

Để in dữ liệu ra tệp, chúng tôi đã sử dụng phương thức print().

Tại đây, khi chúng ta chạy chương trình, tệp output.txt sẽ chứa nội dung sau.

This is a text inside the file

3.4 Phương thức printf()

phương thức printf() có thể được sử dụng để in các chuỗi định dạng. Nó bao gồm 2 tham số: chuỗi được định dạng và các đối số. Ví dụ,

printf("I am %d years old", 25)

Đây,

  • Tôi% d tuổi là một chuỗi được định dạng
  • % d là dữ liệu số nguyên trong chuỗi được định dạng
  • 25 là một đối số

Chuỗi được định dạng bao gồm cả văn bản và dữ liệu. Và, các đối số thay thế dữ liệu bên trong chuỗi được định dạng.

Do đó, % d được thay thế bằng 25 .

3.5 Ví dụ: phương thức printf () sử dụng PrintStream

import java.io.PrintStream;

class Main {
    public static void main(String[] args) {

        try {
            PrintStream output = new PrintStream("output.txt");

            int age = 25;

            output.printf("I am %d years old.", age);
            output.close();
        }
        catch(Exception e) {
            e.getStackTrace();
        }
    }
}

Trong ví dụ trên, chúng tôi đã tạo một luồng in có tên đầu ra. Luồng in được liên kết với tệp output.txt .

PrintStream output = new PrintStream("output.txt");

Để in văn bản đã định dạng vào tệp, chúng tôi đã sử dụng phương thức printf() này.

Tại đây, khi chúng ta chạy chương trình, tệp output.txt sẽ chứa nội dung sau.

I am 25 years old.

4. Các phương thức PrintStream khác

Phương thứcMô tả
close()đóng luồng in
checkError()kiểm tra xem có lỗi trong luồng hay không và trả về kết quả boolean
append()nối dữ liệu được chỉ định vào luồng

Để tìm hiểu thêm, hãy truy cập Java PrintStream (tài liệu Java chính thức) .

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!