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 FileReader
và BufferedReader
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. Files
và Paths
đơ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:
- Lớp
Files
trong tài liệu chính thức của Java. - Đọc, viết và tạo tệp cho một hướng dẫn kỹ lưỡng.
- Apache Commons IO cho một thư viện mạnh mẽ các tiện ích IO tệp.