Đọc một tệp văn bản

Java:
Đọc một tệp văn bản

Làm thế nào:

Đọc một tệp trong Java thật dễ dàng, đặc biệt là với java.nio.file. Dưới đây là một ví dụ nhanh:

import java.nio.file.Files;
import java.nio.file.Path;
import java.io.IOException;
import java.util.stream.Stream;

public class FileReadExample {
    public static void main(String[] args) {
        Path filePath = Path.of("example.txt");

        try (Stream<String> lines = Files.lines(filePath)) {
            lines.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Chạy đoạn code này với example.txt chứa “Hello, file readers!” sẽ xuất ra:

Hello, file readers!

Sâu hơn

Java đã phát triển. Trước đây, bạn phải tự quản lý stream và reader - rất nhiều đoạn mã mẫu. Gói java.io từng được ưa chuộng, với FileReaderBufferedReader thường được sử dụng. Sau đó, java.nio ra đời, cung cấp channels và buffers cho nhiều điều khiển hơn.

Bây giờ, java.nio.file còn cao cấp hơn. FilesPaths đơn giản hóa công việc. Ví dụ trên sử dụng Files.lines, stream các dòng một cách lười biếng, tốt cho các tệp lớn. Bạn cũng nhận được try-with-resources, tự động đóng stream để tránh rò rỉ.

Các phương án thay thế? Scanner rất tiện lợi cho việc phân tích. Apache Commons IO và Google’s Guava có các tiện ích cho các nhiệm vụ phức tạp hơn, nếu bạn cần. Tuy nhiên, Java thuần thường đưa bạn đi khá xa.

Về mặt triển khai, mã hóa tệp quan trọng. Files.lines giả sử UTF-8 là mặc định nhưng bạn có thể chỉ định khác. Mặt khác, BufferedReader yêu cầu bạn phải thiết lập Charset trước nếu nó không phải là mặc định.

Xem thêm

Để biết thêm thông tin thú vị, hãy tham khảo những nguồn sau: