猿问

扫描器与缓冲阅读器

扫描器与缓冲阅读器

据我所知,从java文件中读取基于字符的数据的两种最常见的方法是:ScannerBufferedReader..我也知道BufferedReader使用缓冲区有效地读取文件,以避免物理磁盘操作。我的问题是:

  • 是吗?

    Scanner

    表现得很好

    BufferedReader?

  • 你为什么要选择

    Scanner

    过关

    BufferedReader

    反之亦然?


胡说叔叔
浏览 331回答 3
3回答

不负相思意

Scanner用于解析流内容中的令牌,而BufferedReader只读取流,不执行任何特殊的解析。实际上,您可以通过BufferedReader转到scanner作为要解析的字符的来源。

慕神8447489

看这个链接,引述如下:BufferedReader是一个简单的类,目的是有效地从底层流中读取。通常,像FileReader一样,每个由Reader发出的读取请求都会导致向底层流发出相应的读取请求。每次调用read()或readLine()都会导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。如果读取器在BufferedReader中被扭曲,效率会显著提高。BufferedReader是同步的,因此可以安全地从多个线程对BufferedReader进行读取操作。另一方面,扫描仪内置了更多的奶酪;它可以完成BufferedReader所能做的所有事情,而且效率也是一样的。但是,扫描程序还可以使用正则表达式解析基本类型和字符串的底层流。它还可以使用您选择的分隔符来标记底层流。它还可以对底层流进行前向扫描,而不考虑分隔符!然而,扫描器并不是线程安全的,它必须是外部同步的。选择使用BufferedReader或Scaner取决于您正在编写的代码,如果您正在编写一个简单的日志读取器缓冲读取器就足够了。但是,如果您正在编写XML解析器,则扫描程序是更自然的选择。即使在读取输入时,如果希望逐行接受用户输入并将其添加到文件中,那么BufferedReader就足够了。另一方面,如果希望将用户输入接受为具有多个选项的命令,然后打算根据指定的命令和选项执行不同的操作,则扫描器将更适合。
随时随地看视频慕课网APP

相关分类

Java
我要回答