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

时间:2013-12-30 11:06:32

标签: java java.util.scanner bufferedreader filereader

有人能解释一下班级BufferedReaderFileReaderScanner之间的区别吗?当我想阅读文本文件时使用哪一个?

2 个答案:

答案 0 :(得分:15)

好:

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

要阅读文本文件,我建议使用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);

答案 1 :(得分:1)

根据您阅读文本文件的问题,您应该使用BufferedReader,因为Scanner会隐藏 IOException ,而BufferedReader 会抛出它立即。

BufferedReader 已同步,而Scanner则不是。

Scanner用于从流的内容中解析令牌。

BufferedReader只是读取流。

有关详细信息,请点击链接(http://en.allexperts.com/q/Java-1046/2009/2/Difference-Scanner-Method-Buffered.htm

相关问题