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

谁能解释一下BufferedReader类, FileReaderScanner之间的区别? 当我想阅读文本文件时使用哪一个?

好:

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

要读取文本文件,我建议使用包含在InputStreamReaderFileInputStream (以便您可以指定编码),然后将其包装在BufferedReader以进行缓冲,并且能够一次读取一行。

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

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

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

 Path path = FileSystems.getDefault().getPath("foo.txt"); List lines = Files.readAllLines(path, StandardCharsets.UTF_8); 

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

BufferedReader同步的,Scanner则不是。

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

BufferedReader只读取流。

欲了解更多信息,请点击链接( http://en.allexperts.com/q/Java-1046/2009/2/Difference-Scanner-Method-Buffered.htm