Điều này sử dụng Luồng mới có lambda trong vùng thử.
tôi sẽ nói đó là cách ưa thích và ngắn gọn nhất vì:
1) Nó sẽ tự động đóng dòng khi thực hiện xong và đúng cách ném bất kỳ trường hợp ngoại lệ.
2) Đầu ra của điều này là lười. Mỗi dòng được đọc sau khi dòng cuối cùng được xử lý. Điều này cũng gần gũi hơn với thông số xử lý tệp gốc dựa trên luồng Java.
3) Nó in từng dòng theo cách gần giống nhất với dữ liệu trong tệp.
4) Đây là ít bộ nhớ chuyên sâu bởi vì nó không tạo ra một danh sách trung gian hoặc mảng như Files.readAllLines (...)
5) Đây là linh hoạt nhất, kể từ khi đối tượng Suối cung cấp có nhiều công dụng khác và các chức năng để làm việc với các dữ liệu (biến đổi, bộ sưu tập, các vị từ, vv)
try (Stream<String> stream = Files.lines(Paths.get("sample.txt"),Charset.defaultCharset())) {
stream.forEach(System.out::println);
}
Nếu đường dẫn và charset được cung cấp và người tiêu dùng có thể mất bất kỳ đối tượng sau đó làm việc này quá:
try (Stream stream = Files.lines(path,charset)) {
stream.forEach(System.out::println);
}
Với xử lý lỗi:
try (Stream<String> stream = Files.lines(Paths.get("sample.txt"),Charset.defaultCharset())) {
stream.forEach(System.out::println);
} catch (IOException ex) {
// do something with exception
}
Nguồn
2013-10-26 09:42:18
Bởi vì nhiệm vụ đang được thực hiện trong một chương trình Java. Rõ ràng, nếu bạn đang ở trong MS-DOS hoặc BASH, tệp cat hoạt động. Nhưng bạn biết rằng :) –