BufferReader和Scanner使用采坑

说明

一个问题,是关于显示页面中一段字符串(日志)显示不完整的解决方案。
是这样的,页面显示用例出错,当点击查看详情的的时候,发现用例的错误信息显示不完整。问了一下,这一块是直接从数据库中查出来的。然后就去看了数据库,发现也不完整。只能去看是看如何存进数据库中。
后来发现,项目在执行的过程,日志信息首先被处理成文件,按时间格式(文件夹)保存成log文件,然后,通过Scanner扫描,存入数据库中。在一般情况下,用例正常执行后,显示的信息比较少。甚至在错误的情况下,报的错也只会是堆栈信息。不会太多。但这一个用例涉及到的模块比较多,日志同样打印的也比较多。所以就是,在日志服务器中查看到的日志是完整的,但是存入数据库是缺失的,进一步显示也就不完整了。

说明一下,这一处错误不是我解决的。我将这个问题跟踪了一下,他给我说了怎么解决,我只是修改了代码,出包并部署。下午查看了区别。如下

查阅的资料

java.util.Scanner类是一个简单的文本扫描类,可以解析基本数据类型和字符串。本质上是使用正则表达式读取不同的数据类型。

java.io.BufferedReader类为了能够高效的读取字符串,从字符输入流和字符缓冲区读取文本。

  • Scanner类中nextLine()在形如nextXXX() {nextShort(), nextByte(), nextInt(), nextLong(), next(), nextDouble(), nextFloat() }之后使用,nextLine()方法不能从控制台读取任何内容,游标不会进入控制台,将会跳过这一部。BufferedReader不会出现这个问题。
  • BufferedReader是支持同步的,Scanner不支持。若处理多线程程序,BufferedReader应该使用
  • BufferedReader相对于Scanner有足够大的缓冲区内存
    Scanner(1k),BufferedReader(8k)
  • BufferedReader相对于Scanner快,因为BufferedReader只是简单地读取字符序列。

参考:
https://yq.aliyun.com/ziliao/138200

原文是一篇博客地翻译文章,内网已经看到了。回到宿舍,只找到这篇文章,意思一样。写的不错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值