Текстовый файл в список Java <String>, используя Commons или Guava

Каков самый элегантный способ поместить каждую строку текста (из текстового файла) в LinkedList (как объект String) или какую-либо другую коллекцию, используя библиотеки Commons или Guava.

Ответ 1

Здесь, как это сделать с помощью Guava:

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

Ссылка:

Ответ 2

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

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

Ответ 3

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

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

Или apache commons io:

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

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

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

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

Ответ 4

используя org.apache.commons.io.FileUtils

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

Ответ 6

Они очень похожи, с Commons IO он будет выглядеть так:

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

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

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

Ответ 7

Я не уверен, что вы только хотите знать, как это сделать с помощью 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 (Guava или Commons).