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

lớp BufferedReader của gói java.io có thể được sử dụng với các độc giả khác để đọc dữ liệu (bằng ký tự) hiệu quả hơn.

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

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

BufferedReader duy trì một nội đệm 8192 ký tự .

Trong quá trình đọc trong BufferedReader, một đoạn ký tự được đọc từ đĩa và được lưu trữ trong bộ đệm bên trong. Và từ các ký tự đệm bên trong được đọc riêng lẻ.

Do đó, số lượng thông tin liên lạc đến đĩa bị giảm. Đây là lý do tại sao đọc ký tự nhanh hơn khi sử dụng BufferedReader.

2. Tạo một BufferedReader

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

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

// Creates a BufferedReader
BufferedReader buffer = new BufferedReader(file);

Trong ví dụ trên, chúng tôi đã tạo ra một BufferedReader tên đệm với cái FileReader tên tập tin.

Ở đây, bộ đệm bên trong của BufferedReader có kích thước mặc định là 8192 ký tự. Tuy nhiên, chúng tôi cũng có thể chỉ định kích thước của bộ đệm bên trong.

// Creates a BufferdReader with specified size internal buffer
BufferedReader buffer = new BufferedReader(file, int size);

Bộ đệm sẽ giúp đọc các ký tự từ tệp nhanh hơn.

3. Phương thức BufferedReader

lớp BufferedReader cung cấp triển khai cho các phương thức khác nhau hiện diện trong Reader.

3.1 phương thức read()

  • read() – đọc một ký tự từ bộ đệm bên trong của trình đọc
  • read(char[] array) – đọc các ký tự từ trình đọc và lưu trữ trong mảng được chỉ định
  • read(char[] array, int start, int length) – đọc số ký tự bằng chiều dài từ trình đọc và lưu trữ trong mảng được chỉ định bắt đầu từ vị trí khởi đầu

Ví dụ: giả sử chúng ta có một tệp tên input.txt với nội dung như sau.

This is a line of text inside the file.

Hãy thử đọc tệp bằng cách sử dụng BufferedReader.

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

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

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

    // Creates an array of character
    char[] array = new char[100];

    try {
      // Creates a FileReader
      FileReader file = new FileReader("input.txt");

      // Creates a BufferedReader
      BufferedReader input = new BufferedReader(file);

      // Reads characters
      input.read(array);
      System.out.println("Data in the file: ");
      System.out.println(array);

      // Closes the reader
      input.close();
    }

    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Đầu ra

Data in the file:
This is a line of text inside the file.

Trong ví dụ trên, chúng tôi đã tạo một trình đọc đệm có tên đầu vào. Bộ đọc đệm được liên kết với tệp input.txt .

FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);

Ở đây, chúng tôi đã sử dụng phương thức read() để đọc một mảng ký tự từ bộ đệm bên trong của bộ đọc đệm.

3.2 phương thức skip()

Để loại bỏ và bỏ qua số ký tự đã chỉ định, chúng ta có thể sử dụng phương thức skip() này. Ví dụ,

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

public class Main {

  public static void main(String args[]) {

    // Creates an array of characters
    char[] array = new char[100];

    try {
      // Suppose, the input.txt file contains the following text
      // This is a line of text inside the file.
      FileReader file = new FileReader("input.txt");

      // Creates a BufferedReader
      BufferedReader input = new BufferedReader(file);

      // Skips the 5 characters
      input.skip(5);

      // Reads the characters
      input.read(array);

      System.out.println("Data after skipping 5 characters:");
      System.out.println(array);

      // closes the reader
      input.close();
    }

    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

Đầu ra

Data after skipping 5 characters:
is a line of text inside the file.

Trong ví dụ trên, chúng tôi đã sử dụng phương thức skip()bỏ qua 5 ký tự khỏi trình đọc tệp. Do đó, các nhân vật ‘T’, ‘h’, ‘i’, ‘s’và ‘ ‘được bỏ qua từ tập tin gốc.

3.3 phương thức close()

Để đóng bộ đọc đệm, chúng ta có thể sử dụng phương thức close(). Khi phương thức close() được gọi, chúng ta không thể sử dụng bộ đọc để đọc dữ liệu.

4. Các phương thức khác của BufferedReader

phương thứcSự miêu tả
ready()kiểm tra xem trình đọc tệp đã sẵn sàng để đọc chưa
mark()đánh dấu vị trí trong trình đọc mà dữ liệu đã được đọc
reset()trả điều khiển đến điểm trong đầu đọc nơi đánh dấu được đặt

Để tìm hiểu thêm, hãy truy cập Java BufferedReader (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!