一尘不染

缓冲读取器和文件读取器以及扫描器类之间的区别

java

任何人都可以解释我的类之间的区别BufferedReaderFileReader以及Scanner?我想阅读文本文件时使用哪一个?


阅读 149

收藏
2020-12-03

共1个答案

一尘不染

好:

  • FileReader只是Reader使用平台默认编码(urgh)读取文件的
  • BufferedReader是另一个的包装Reader,增加了缓冲并可以一次读取一行
  • Scanner从各种不同的来源读取内容,但通常用于交互式输入。我个人觉得API的Scanner痛苦和晦涩。

要读取一个文本文件,我建议使用一个FileInputStream包裹在一个InputStreamReader(这样你就可以指定编码),然后包裹在BufferedReader缓冲和在同一时间读取线的能力。

或者,您可以使用使它更简单的第三方库,例如Guava

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

或者,如果您使用的是Java 7,则可以在以下位置使用它java.nio.file.Files

Path path = FileSystems.getDefault().getPath("foo.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
2020-12-03