为了账号安全,请及时绑定邮箱和手机立即绑定

扫描器与缓冲阅读器

扫描器与缓冲阅读器

胡说叔叔 2019-06-19 10:31:58
扫描器与缓冲阅读器据我所知,从java文件中读取基于字符的数据的两种最常见的方法是:Scanner或BufferedReader..我也知道BufferedReader使用缓冲区有效地读取文件,以避免物理磁盘操作。我的问题是:是吗?Scanner表现得很好BufferedReader?你为什么要选择Scanner过关BufferedReader反之亦然?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

Scanner用于解析流内容中的令牌,而BufferedReader只读取流,不执行任何特殊的解析。

实际上,您可以通过BufferedReader转到scanner作为要解析的字符的来源。


查看完整回答
反对 回复 2019-06-19
?
慕神8447489

TA贡献1780条经验 获得超1个赞

看这个链接,引述如下:

BufferedReader是一个简单的类,目的是有效地从底层流中读取。通常,像FileReader一样,每个由Reader发出的读取请求都会导致向底层流发出相应的读取请求。每次调用read()或readLine()都会导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。如果读取器在BufferedReader中被扭曲,效率会显著提高。

BufferedReader是同步的,因此可以安全地从多个线程对BufferedReader进行读取操作。

另一方面,扫描仪内置了更多的奶酪;它可以完成BufferedReader所能做的所有事情,而且效率也是一样的。但是,扫描程序还可以使用正则表达式解析基本类型和字符串的底层流。它还可以使用您选择的分隔符来标记底层流。它还可以对底层流进行前向扫描,而不考虑分隔符!

然而,扫描器并不是线程安全的,它必须是外部同步的。

选择使用BufferedReader或Scaner取决于您正在编写的代码,如果您正在编写一个简单的日志读取器缓冲读取器就足够了。但是,如果您正在编写XML解析器,则扫描程序是更自然的选择。

即使在读取输入时,如果希望逐行接受用户输入并将其添加到文件中,那么BufferedReader就足够了。另一方面,如果希望将用户输入接受为具有多个选项的命令,然后打算根据指定的命令和选项执行不同的操作,则扫描器将更适合。


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 330 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号