Текстовый файл в Java List <String>с использованием Commons или Guava - PullRequest
14 голосов
/ 02 января 2011

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

Ответы [ 7 ]

28 голосов
/ 02 января 2011

Вот как это сделать с Гуава :

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

Справка:

18 голосов
/ 02 января 2011

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

List<String> lines = FileUtils.readLines(new File("..."));
for (String line : lines) {
  System.out.println(line);  
}
12 голосов
/ 02 января 2011

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

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) . И там тоже нужно явно указывать кодировку.

7 голосов
/ 02 января 2011

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

FileUtils.readLines(new File("file.txt"));
5 голосов
/ 02 января 2011

Они очень похожи, с 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);
5 голосов
/ 02 января 2011

Это, вероятно, то, что вы ищете

FileUtils.readLines(File file)

2 голосов
/ 15 декабря 2015

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

...