Trong hướng dẫn này, chúng ta sẽ tìm hiểu về FileReader 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 FileReader của gói java.io có thể được sử dụng để đọc dữ liệu (bằng ký tự) từ các tập tin.

Nó mở rộng lớp InputSreamReader.

Trước khi tìm hiểu FileReader, hãy đảm bảo rằng bạn biết về File trong Java .

1. Tạo một FileReader

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

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

FileReader input = new FileReader(String name);

Ở đây, chúng ta đã tạo một trình đọc tệp sẽ được liên kết với tệp được chỉ định bởi Tên.

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

FileReader input = new FileReader(File fileObj);

Ở đây, chúng tôi đã tạo một trình đọc tệp sẽ được liên kết với tệp được chỉ định bởi đối tượng của tệp.

-->

Trong ví dụ trên, dữ liệu trong tệp được lưu trữ bằng một số mã hóa ký tự mặc định.

Tuy nhiên, kể từ Java 11, chúng ta cũng có thể chỉ định kiểu mã hóa ký tự ( UTF-8 hoặc UTF-16 ) trong tệp.

FileReader input = new FileReader(String file, Charset cs);

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

2. Phương thức của FileReader

lớp FileReader cung cấp triển khai cho các phương thức khác nhau trình bày trong Readerlớp.

2.1 phương thức read()

  • 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ữ 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 FileReader.

/*
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;

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

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

    try {
      // Creates a reader using the FileReader
      FileReader input = new FileReader("input.txt");

      // 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 ta đã tạo một trình đọc tệp có tên đầu vào. Trình đọc tệp được liên kết với tệp input.txt .

FileInputStream input = new FileInputStream("input.txt");

Để đọc dữ liệu từ tệp, chúng ta đã sử dụng phương thức read().

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

phương thức getEncoding() có thể được sử dụng để có được các loại mã hóa được sử dụng để lưu trữ dữ liệu trong file. Ví dụ,

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

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

    try {
      // Creates a FileReader with default encoding
      FileReader input1 = new FileReader("input.txt");

      // Creates a FileReader specifying the encoding
      FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8"));

      // Returns the character encoding of the file reader
      System.out.println("Character encoding of input1: " + input1.getEncoding());
      System.out.println("Character encoding of input2: " + input2.getEncoding());

      // Closes the reader
      input1.close();
      input2.close();
    }

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

Đầu ra

The character encoding of input1: Cp1252
The character encoding of input2: UTF8

Trong ví dụ trên, chúng tôi đã tạo 2 trình đọc tệp có tên input1 và input2.

  • input1không chỉ định mã hóa ký tự. Do đó, phương thức getEncoding() trả về mã hóa ký tự mặc định.
  • input2chỉ định mã hóa ký tự, UTF8 . Do đó, phương thức getEncoding() trả về mã hóa ký tự được chỉ định.

Lưu ý : Chúng tôi đã sử dụng phương thức Charset.forName() để chỉ định loại 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.1 phương thức close()

Để đóng trình đọc tệp, 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 FileReader

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 tệp 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 FileReader (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!