使用Commons或Guava </string>将文本文件导入Java List <string>

时间:2011-01-02 20:19:39

标签: java file text guava apache-commons

使用Commons或Guava库将每行文本(从文本文件)放入LinkedList(作为String对象)或其他集合的最优雅方法是什么。

7 个答案:

答案 0 :(得分:28)

以下是使用Guava

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

参考:

答案 1 :(得分:18)

使用Apache Commons IO,您可以使用FileUtils#readLines方法。它很简单:

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

答案 2 :(得分:12)

你可以使用番石榴:

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

或apache commons io:

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

我说两者都同样优雅。

根据您的确切用法,假设“默认编码”可能是个好主意。无论哪种方式,我个人觉得Guava API明确表示您正在对文件的编码做出假设。

更新: Java 7现在内置了这个:Files.readAllLines(Path path, Charset cs)。此外,您还必须明确指定字符集。

答案 3 :(得分:7)

使用org.apache.commons.io.FileUtils

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

答案 4 :(得分:5)

这可能就是你要找的东西

FileUtils.readLines(File file)

答案 5 :(得分:5)

它们非常相似,Commons IO看起来像这样:

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

Guava的主要优点是charset的规范(没有拼写错误):

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

答案 6 :(得分: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文件(Guava或Commons)。