BufferedReader如何在java中工作

时间:2015-06-30 14:57:52

标签: java bufferedreader inputstreamreader

我想知道BufferedReader的工作原理吗?为什么使用InputStreamReader?它与Scanner类有何不同,后者也用于输入用户? 哪两个更好?

2 个答案:

答案 0 :(得分:5)

主要区别是

  1. 扫描程序用于从流的内容中解析令牌 而BufferedReader只读取流而不执行任何操作 特殊解析。 实际上,您可以将BufferedReader传递给扫描仪作为源 要解析的字符。
  2. 另一个区别是缓冲区的大小。扫描仪有很多 比BufferedReader更小的缓冲区(1024个字符而不是 8192个字符)。虽然这可能听起来像是一个很大的差距,但是Scanner的 对于大多数任务来说,缓冲区更多
  3. 当BufferedReader抛出它们时,扫描程序隐藏 IOExceptions 立即,这有利有弊。
  4. 最后,BufferedReader是同步的,而Scanner则不是。使用 如果您正在使用多个线程,请使用BufferedReader。
  5. 你可以通过Google搜索来轻松找到它。

    Here's一个很好的链接。

答案 1 :(得分:3)

来自BufferedReader

的javadoc

从字符输入流中读取文本,缓冲字符,以便有效读取字符,数组和行。

来自Scanner

的javadoc

一个简单的文本扫描程序,可以使用正则表达式解析基本类型和字符串。扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。然后可以使用各种下一种方法将得到的标记转换为不同类型的值。

基本上BufferedReader有效地读取字符。

Scanner在标记中拆分字符序列(类似于单词)并允许访问某些基本类型(或类)(如int, long, byte, double, String ...)。它是一个解析输入的辅助类,而不是缓冲它。