2011-01-02 30 views

Trả lời

18

Sử dụng Apache Commons IO, bạn có thể sử dụng phương pháp FileUtils#readLines. Nó cũng đơn giản như:

List<String> lines = FileUtils.readLines(new File("...")); 
for (String line : lines) { 
    System.out.println(line); 
} 
+2

'IOUtils.lineIterator' là lựa chọn tốt hơn vì nó không tải toàn bộ tệp vào bộ nhớ. –

7

sử dụng org.apache.commons.io.FileUtils

FileUtils.readLines(new File("file.txt")); 
12

Bạn có thể sử dụng ổi:

Files.readLines(new File("myfile.txt"), Charsets.UTF_8); 

Hoặc apache commons io:

FileUtils.readLines(new File("myfile.txt")); 

tôi muốn nói cả hai đều bình đẳng thanh lịch.

Tùy thuộc vào việc sử dụng chính xác của bạn, giả sử "mã hóa mặc định" có thể là một ý hay hay không. Dù bằng cách nào, cá nhân tôi thấy nó tốt rằng các API Guava làm cho nó rõ ràng rằng bạn đang làm cho một giả định về mã hóa của tập tin.

Cập nhật: Java 7 hiện đã được tích hợp sẵn: Files.readAllLines(Path path, Charset cs). Và ở đó bạn phải xác định rõ ràng bộ ký tự.

4

Họ là khá tương tự, với Commons IO nó sẽ giống như thế này:

List<String> lines = FileUtils.readLines(new File("file.txt"), "UTF-8"); 

lợi thế chính của Ổi là đặc điểm kỹ thuật của charset (không lỗi chính tả):

List<String> lines = Files.readLines(new File("file.txt"), Charsets.UTF_8); 
2

Tôi không chắc chắn nếu bạn chỉ muốn biết làm thế nào để làm điều này thông qua Guava hoặc Commons IO, nhưng kể từ Java 7 này có thể được thực hiện thông qua java.nio.file.Files.readAllLines(Path path, Charset cs) (javadoc).

List<String> allLines = Files.readAllLines(dir.toPath(), StandardCharsets.UTF_8); 

Vì đây là một phần của Java SE nên không yêu cầu bạn thêm bất kỳ tệp jar bổ sung nào (Dự kiến ​​hoặc Commons) vào dự án của bạn.

Các vấn đề liên quan