Lớp BufferedReader Java – Khởi tạo, đọc dữ liệu từ tệp

Tìm hiểu về lớp BufferedReader java: khái niệm, cách khởi tạo và một số ví dụ mẫu.

Giới thiệu về Java BufferedReader

Lớp Java BufferedReader được sử dụng để đọc văn bản từ luồng đầu vào dựa trên ký tự. Nó có thể được sử dụng để đọc từng dòng dữ liệu bằng phương thức readLine(). Nó làm cho hiệu suất nhanh chóng. Nó kế thừa lớp Reader.

Cách khởi tạo đối tượng Java BufferedReader

Để khởi tạo một đối tượng BufferedReader trong Java, bạn cần sử dụng một trong hai phương thức tạo của lớp BufferedReader. Bạn có thể tạo BufferedReader từ một đối tượng Reader hoặc từ một đối tượng InputStream. Đây là cách bạn có thể khởi tạo đối tượng BufferedReader:

FileReader file = new FileReader("D:\\ttnguyen.txt");
BufferedReader buff = new BufferedReader(file);

InputStreamReader input= new InputStreamReader(System.in);    
BufferedReader buff = new BufferedReader(input);

Một số hàm

BufferedReader(Reader rd) tạo ra một đối tượng BufferedReader với một bộ đệm mặc định có kích thước được xác định bởi hệ thống. Điều này giúp tối ưu hiệu suất đọc dữ liệu bằng cách lưu trữ dữ liệu vào bộ đệm và cung cấp cho chương trình đọc dữ liệu theo từng lô thay vì từng ký tự riêng lẻ.

BufferedReader(Reader rd, int size) tương tự nhưng cho phép bạn xác định kích thước của bộ đệm theo ý muốn. Bạn có thể chỉ định kích thước bộ đệm tùy thuộc vào yêu cầu cụ thể của ứng dụng để tối ưu hiệu suất đọc dữ liệu.

Một số phương thức

int read(): Đọc một ký tự từ luồng đầu vào. Phương thức này trả về giá trị ký tự được đọc hoặc -1 nếu đã đọc hết dữ liệu.

int read(char[] cbuf, int off, int len): Đọc số lượng ký tự bằng giá trị của length và lưu trữ trong mảng được chỉ định bắt đầu từ vị trí off.

boolean markSupported(): Được sử dụng để kiểm tra xem luồng đầu vào có hỗ trợ phương thức đánh dấu và thiết lập lại (mark và reset) hay không.

String readLine(): Đọc một dòng văn bản từ luồng đầu vào. Phương thức này trả về một chuỗi, hoặc null nếu đã đọc hết dữ liệu.

boolean ready(): Kiểm tra xem luồng đầu vào có sẵn để đọc hay không. Trả về true nếu có thể đọc ngay lập tức, false nếu không.

long skip(long n): Bỏ qua số lượng ký tự được xác định (n) trong luồng đầu vào. Trả về số lượng ký tự thực sự đã được bỏ qua.

void reset(): Đặt lại vị trí đọc trên luồng đầu vào đến vị trí đã đánh dấu trước đó bằng phương thức mark.

void mark(int readAheadLimit): Đánh dấu vị trí hiện tại trong luồng đầu vào để có thể trở về sau khi đọc một số lượng ký tự nhất định (readAheadLimit).

void close(): Đóng luồng đầu vào và giải phóng bất kỳ tài nguyên hệ thống.

Sử dụng Java BufferedReader để đọc dữ liệu từ tệp

Để đọc dữ liệu từ một tệp, bạn cần khởi tạo BufferedReader với FileReader như đã mô tả ở trên. Sau đó, bạn có thể sử dụng phương thức read() hoặc readLine() để đọc ký tự hoặc dòng từ tệp.

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

public class BufferedReaderExample {

    public static void main(String[] args) {
        try {
            FileReader file = new FileReader("D:\\ttnguyen.txt");
            BufferedReader bufferedReader = new BufferedReader(file);

            String line;
            //Doc tung dong cua van ban va gan vao bien line
            while ((line = bufferedReader.readLine()) != null) {
                //in ra man hinh
                System.out.println(line);
            }
            
            file.close();
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Sử dụng BufferedReader để đọc dữ liệu từ bàn phím

Chương trình Java này sử dụng InputStreamReader và BufferedReader để đọc dữ liệu từ người dùng thông qua bàn phím. Sau khi người dùng nhập một dòng văn bản, chương trình sẽ hiển thị lại dòng văn bản đó trên màn hình console.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BufferedReaderandInputStreamReader {

    public static void main(String[] args) {
        
        String line;

        try {
            InputStreamReader input = new InputStreamReader(System.in);
            BufferedReader buff = new BufferedReader(input);

            System.out.println("Line: ");
            line = buff.readLine();

            System.out.println(line);
        } catch (Exception e) {
        }
    }
}

Ưu điểm của Java BufferedReader

Hiệu suất đọc dữ liệu của BufferedReader cao hơn nhiều so với StreamReader bởi vì BufferedReader lưu trữ dữ liệu vào bộ nhớ đệm. Điều này giảm thiểu số lượng truy cập đĩa cứng, từ đó giảm bớt thời gian đọc tệp. Ngoài ra, BufferedReader cung cấp phương thức đọc dòng readLine(), giúp việc đọc dòng dễ dàng hơn nhiều.

Trên đây là thông tin về cách sử trong BufferedReader trong java. Hy vọng những thông tin trên hữu ích. Cảm ơn các bạn đã tham khảo bài tập lập trình hướng đối tượng java trên ttnguyen.net.

Bài viết liên quan:

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em