Xem thêm

Tự học Java | Khám phá lớp FileReader trong Java

Huy Erick
Trong hướng dẫn này, chúng ta sẽ đi sâu vào khám phá lớp FileReader trong ngôn ngữ lập trình Java và tìm hiểu về các phương thức quan trọng của nó thông qua các ví...

Trong hướng dẫn này, chúng ta sẽ đi sâu vào khám phá lớp FileReader trong ngôn ngữ lập trình Java và tìm hiểu về các phương thức quan trọng của nó thông qua các ví dụ minh họa.

Lớp FileReader trong Java Hình ảnh minh họa (Nguồn: nanado.edu.vn)

Trước khi bắt đầu, hãy chắc chắn rằng bạn đã nắm vững về lớp File trong Java để hiểu rõ hơn về FileReader.

1. Tạo một FileReader

Để tạo ra một đối tượng FileReader, chúng ta cần import gói java.io.FileReader. Sau đó, chúng ta có thể sử dụng các phương thức sau để tạo trình đọc tệp.

1. Sử dụng tên của tệp

FileReader input = new FileReader(String tenTep);

Ở đây, chúng ta tạo một FileReader và liên kết nó với tệp được chỉ định bởi tenTep.

2. Sử dụng một đối tượng của tệp

FileReader input = new FileReader(File doiTuongTep);

Trong trường hợp này, chúng ta tạo một FileReader và liên kết nó với tệp được chỉ định bởi đối tượng doiTuongTep.

Lưu ý rằng dữ liệu trong tệp được lưu trữ dưới dạng mã hóa ký tự mặc định. Tuy nhiên, từ Java 11 trở đi, chúng ta cũng có thể chỉ định kiểu mã hóa ký tự (UTF-8 hoặc UTF-16) cho tệp.

FileReader input = new FileReader(String tenTep, Charset maHoa);

Ở đây, chúng ta sử dụng lớp Charset để chỉ định mã hóa ký tự cho trình đọc tệp.

2. Các phương thức của FileReader

Lớp FileReader cung cấp các phương thức để đọc dữ liệu từ tệp, được thể hiện qua quan hệ kế thừa từ lớp Reader.

2.1 phương thức read()

Lớp FileReader cung cấp các phương thức sau:

  • read(): đọc một ký tự duy nhất từ trình đọc.
  • read(char[] array): đọc các ký tự từ trình đọc và lưu trữ vào mảng được chỉ định.
  • read(char[] array, int start, int length): đọc một số ký tự theo chiều dài chỉ định từ trình đọc và lưu trữ vào 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 có tên "input.txt" với nội dung sau:

This is a line of text inside the file.

Hãy thử đọc tệp bằng FileReader.

import java.io.FileReader;

class Main {
  public static void main(String[] args) {
    // Tạo một mảng ký tự
    char[] array = new char[100];
    try {
      // Tạo một trình đọc bằng FileReader
      FileReader input = new FileReader("input.txt");

      // Đọc các ký tự từ trình đọc và lưu vào mảng
      input.read(array);

      // In dữ liệu trong tệp ra màn hình
      System.out.println("Dữ liệu trong tệp: ");
      System.out.println(array);

      // Đóng trình đọc
      input.close();
    } catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Đầu ra:

Dữ liệu trong tệp: This is a line of text inside the file.

Ở ví dụ trên, chúng ta đã tạo một đối tượng FileReader và liên kết nó với tệp "input.txt". Sau đó, chúng ta sử dụng phương thức read() để đọc dữ liệu từ tệp.

3. Phương thức getEncoding()

Phương thức getEncoding() có thể được sử dụng để lấy mã hóa ký tự được sử dụng để lưu trữ dữ liệu trong tệp. Ví dụ:

import java.io.FileReader;
import java.nio.charset.Charset;

class Main {
  public static void main(String[] args) {
    try {
      // Tạo một FileReader với mã hóa mặc định
      FileReader input1 = new FileReader("input.txt");

      // Tạo một FileReader với mã hóa được chỉ định
      FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8"));

      // Lấy mã hóa ký tự từ FileReader
      System.out.println("Mã hóa ký tự của input1: " + input1.getEncoding());
      System.out.println("Mã hóa ký tự của input2: " + input2.getEncoding());

      // Đóng trình đọc
      input1.close();
      input2.close();
    } catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Đầu ra:

Mã hóa ký tự của input1: Cp1252
Mã hóa ký tự của input2: UTF8

Trong ví dụ trên, chúng ta đã tạo hai đối tượng FileReader, input1input2. input1 không chỉ định mã hóa ký tự, do đó phương thức getEncoding() trả về mã hóa ký tự mặc định. Trong khi input2 chỉ định mã hóa ký tự là UTF8, do đó phương thức getEncoding() trả về mã hóa ký tự đã được chỉ định.

Lưu ý: Chúng ta sử dụng phương thức Charset.forName() để chỉ định loại mã hóa ký tự. Để tìm hiểu thêm, bạn có thể truy cập tài liệu chính thức về java.nio.charset.Charset.

3.1 phương thức close()

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

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

Ngoài những phương thức đã được đề cập, lớp FileReader còn cung cấp các phương thức khác như ready(), mark(), và reset(). Để tìm hiểu thêm, bạn có thể truy cập tài liệu chính thức về java.io.FileReader.

Chúc bạn thành công trong việc học Java và tận hưởng quá trình học tập.

1