BufferedReader在java中的工作原理

BufferedReader在java中的工作原理,java,bufferedreader,inputstreamreader,Java,Bufferedreader,Inputstreamreader,我想知道BufferedReader是如何工作的?为什么与InputStreamReader一起使用?它与同样用于获取用户输入的Scanner类有何不同? 两者中哪一个更好?主要区别是 Scanner用于从流的内容解析令牌 而BufferedReader只读取流,不执行任何操作 特殊解析。 事实上,您可以将BufferedReader作为数据源传递给扫描仪 要分析的字符 另一个区别是缓冲区的大小。扫描仪有很多优点 比BufferedReader更小的缓冲区(1024个字符,与 8192个字符)。

我想知道BufferedReader是如何工作的?为什么与InputStreamReader一起使用?它与同样用于获取用户输入的Scanner类有何不同?
两者中哪一个更好?

主要区别是

  • Scanner用于从流的内容解析令牌 而BufferedReader只读取流,不执行任何操作 特殊解析。 事实上,您可以将BufferedReader作为数据源传递给扫描仪 要分析的字符
  • 另一个区别是缓冲区的大小。扫描仪有很多优点 比BufferedReader更小的缓冲区(1024个字符,与 8192个字符)。虽然这听起来像是一个很大的差距,但扫描仪的 缓冲区对于大多数任务来说已经足够了
  • 当BufferedReader抛出异常时,Scanner也会隐藏异常 这立即显示了优点和缺点
  • 最后,BufferedReader是同步的,而Scanner不是。使用 BufferedReader,如果您使用多个线程
  • 你可以通过谷歌很容易地找到它


    很好的链接。

    来自
    BufferedReader的javadoc

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

    扫描仪的javadoc

    一个简单的文本扫描器,可以使用正则表达式解析原语类型和字符串。扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白。然后,可以使用各种后续方法将生成的令牌转换为不同类型的值

    基本上,
    BufferedReader
    可以高效地读取字符


    Scanner
    在令牌(类似于单词)中拆分字符序列,并允许访问一些基本类型(或类)(如
    int、long、byte、double、String
    …)。它是一个帮助类,用于解析输入,而不是缓冲输入。

    如果您想知道;你为什么不试试看呢?比如,你自己,在来这里之前先做一些研究,让其他人花时间教你。我投票把这个问题作为离题来结束,因为它既没有提出具体的编程问题,也没有展示出基本的努力水平。