缓冲读卡器与文件读取器和扫描仪类之间的区别

Cha*_*bel 12 java filereader bufferedreader java.util.scanner

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

Jon*_*eet 15

好:

  • FileReader只是一个Reader使用platform-default编码(urgh)读取文件的文件
  • BufferedReader是另一个包装器Reader,添加缓冲和一次读取一行的能力
  • Scanner从各种不同的来源读取,但通常用于交互式输入.就个人而言,我发现API Scanner非常痛苦和模糊.

要读取文本文件,我建议使用一个FileInputStream包装InputStreamReader(因此您可以指定编码)然后包装在BufferedReaderfor缓冲和一次读取一行的能力.

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

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

或者,如果您使用的是Java 7,它已经可用于java.nio.file.Files:

Path path = FileSystems.getDefault().getPath("foo.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)