2011-01-02 13 views

ответ

18

Используя Apache Commons IO, вы можете использовать метод FileUtils#readLines. Это так же просто, как:

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

'IOUtils.lineIterator' - лучший выбор, поскольку он не загружает весь файл в память. –

7

с использованием org.apache.commons.io.FileUtils

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

Вы можете использовать Guava:

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

Или Apache Commons IO:

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

Я бы сказал, что оба одинаково элегантно.

В зависимости от вашего использования, если предположить, что «кодировка по умолчанию» может быть хорошей идеей или нет. В любом случае, лично я считаю, что API Гуавы дает понять, что вы делаете предположение о кодировке файла.

Обновление: Java 7 теперь имеет этот встроенный: Files.readAllLines(Path path, Charset cs). И там тоже вы должны явно указать кодировку.

4

Они очень похожи, с Commons IO это будет выглядеть следующим образом:

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

Основное преимущество гуавы является спецификация набора символов (без опечаток):

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

Я не уверен, хотите ли вы только знать, как это сделать через Guava или Commons IO, но с Java 7 это можно сделать через java.nio.file.Files.readAllLines(Path path, Charset cs) (javadoc).

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

Поскольку это часть Java SE не требует от вас, чтобы добавить дополнительные файлы JAR (гуава или Commons) к вашему проекту.