Lớp BufferedReader
(Class BufferedReader)

Lớp BufferedReader trong Java là một lớp con của lớp Reader, được sử dụng để đọc dữ liệu ký tự từ một luồng đầu vào. Nó hoạt động bằng cách đệm các ký tự, giúp giảm thiểu số lần truy cập vào nguồn dữ liệu gốc, từ đó tăng tốc độ đọc. Có thể tùy chỉnh kích thước bộ đệm khi khởi tạo đối tượng. Phương thức readLine() là đặc trưng của BufferedReader, cho phép đọc từng dòng văn bản một cách tiện lợi.

Khai báo lớp BufferedReader trong Java

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

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

Cú pháp

public class BufferedReader
extends Reader

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

↳ public: Từ khóa public chỉ ra rằng lớp BufferedReader có thể được truy cập từ bất kỳ đâu trong chương trình, nghĩa là nó có thể được sử dụng bởi các lớp và gói khác mà không bị hạn chế quyền truy cập.

↳ class BufferedReader: Từ khóa class chỉ ra rằng BufferedReader là một lớp trong Java.

↳ extends Reader: Lớp BufferedReader kế thừa từ lớp Reader, điều này có nghĩa là nó mở rộng và kế thừa các phương thức của lớp Reader. BufferedReader kế thừa các phương thức từ Reader, như read(), close(), và các phương thức khác, đồng thời bổ sung thêm các phương thức riêng để cải thiện

Các Constructor của lớp BufferedReader

Lớp BufferedReader cung cấp hai constructor để tạo đối tượng:

↳ BufferedReader(Reader in): Tạo một đối tượng BufferedReader sử dụng bộ đệm có kích thước mặc định để đọc từ luồng ký tự in.

↳ BufferedReader(Reader in, int sz): Tạo một đối tượng BufferedReader sử dụng bộ đệm có kích thước sz để đọc từ luồng ký tự in.

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

Các phương thức trong BufferedReader cung cấp các cách khác nhau để tương tác với dữ liệu. Bạn có thể sử dụng chúng để đọc dữ liệu theo dòng hoặc theo ký tự, đánh dấu vị trí trong luồng, đặt lại luồng về vị trí đã đánh dấu, và kiểm tra xem luồng còn dữ liệu để đọc hay không. Dưới đây là danh sách tất cả các phương thức của lớp BufferedReader trong Java:

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

↳ Stream<String> lines(): Trả về một Stream chứa các dòng văn bản từ luồng.

↳ void mark(int readAheadLimit): Đánh dấu vị trí hiện tại trong luồng.

↳ boolean markSupported(): Luôn trả về true vì BufferedReader hỗ trợ đánh dấu.

↳ int read(): Đọc một ký tự.

↳ int read(char[] cbuf, int off, int len): Đọc nhiều ký tự vào mảng cbuf.

↳ String readLine(): Đọc một dòng văn bản.

↳ boolean ready(): Kiểm tra xem luồng sẵn sàng để đọc hay không.

↳ void reset(): Đặt lại vị trí của luồng về vị trí đã đánh dấu.

↳ long skip(long n): Bỏ qua n ký tự.

Ví dụ 1

Dưới đây là ví dụ về cách sử dụng lớp BufferedReader để đọc dữ liệu từ một tệp văn bản và in ra từng dòng:

Ví dụ: Example.java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Example {
    public static void main(String[] args) {
        // Đường dẫn đến tệp văn bản
        String filePath = "Example.txt";

        // Sử dụng try-with-resources để tự động đóng BufferedReader
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) {
            String line;
            // Đọc từng dòng từ tệp cho đến khi hết dữ liệu
            while ((line = bufferedReader.readLine()) != null) {
                // In dòng đọc được ra màn hình
                System.out.println(line);
            }
        } catch (IOException e) {
            // Xử lý lỗi nếu có
            e.printStackTrace();
        }
    }
}

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

Xin chào, thế giới!
Chào mừng bạn đến với Java

Ví dụ trên cho thấy cách sử dụng BufferedReader để đọc từng dòng của tệp văn bản và in ra màn hình. Phương thức readLine() là cách chính để đọc dữ liệu dòng từ BufferedReader, và try-with-resources giúp đảm bảo tài nguyên được giải phóng đúng cách.

Ví dụ 2

Dưới đây là một ví dụ khác về cách sử dụng lớp BufferedReader để đọc dữ liệu từ một chuỗi thay vì từ một tệp văn bản. Ví dụ này sử dụng lớp StringReader để cung cấp dữ liệu cho BufferedReader.

Ví dụ: Example.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;

public class Example {
    public static void main(String[] args) {
        // Chuỗi dữ liệu để đọc
        String data = "Dòng 1\nDòng 2\nDòng 3";

        // Tạo StringReader từ chuỗi dữ liệu
        try (BufferedReader bufferedReader = new BufferedReader(new StringReader(data))) {
            String line;
            // Đọc từng dòng từ chuỗi cho đến khi hết dữ liệu
            while ((line = bufferedReader.readLine()) != null) {
                // In dòng đọc được ra màn hình
                System.out.println(line);
            }
        } catch (IOException e) {
            // Xử lý lỗi nếu có
            e.printStackTrace();
        }
    }
}

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

Dòng 1
Dòng 2
Dòng 3

Ví dụ trên cho thấy cách sử dụng BufferedReader để đọc dữ liệu từ một chuỗi thay vì từ một tệp văn bản. Điều này có thể hữu ích khi bạn cần xử lý dữ liệu được lưu trữ trong bộ nhớ thay vì trên đĩa.

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