缓冲读卡器与文件读取器和扫描仪类之间的区别
谁能解释一下BufferedReader
类, FileReader
和Scanner
之间的区别? 当我想阅读文本文件时使用哪一个?
好:
-
FileReader
只是一个使用platform-default编码(urgh)读取文件的Reader
-
BufferedReader
是另一个Reader
的包装Reader
,增加了缓冲和一次读取一行的能力 -
Scanner
从各种不同的来源读取,但通常用于交互式输入。 就个人而言,我发现Scanner
的API非常痛苦和模糊。
要读取文本文件,我建议使用包含在InputStreamReader
的FileInputStream
(以便您可以指定编码),然后将其包装在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 )