前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[二十二]JavaIO之LineNumberReader

[二十二]JavaIO之LineNumberReader

作者头像
noteless
发布2018-09-14 14:50:38
4820
发布2018-09-14 14:50:38
举报
文章被收录于专栏:notelessnotelessnoteless

功能介绍

LineNumberReader是提供了行号的具体的装饰器类

跟踪行号的缓冲字符输入流 此类定义了方法 setLineNumber(int) 和 getLineNumber(),它们可分别用于设置和获取当前行号

默认情况下,行编号从 0 开始 该行号随数据读取在每个 行结束符 处递增,并且可以通过调用 setLineNumber(int) 更改行号 但是,setLineNumber(int) 不会实际更改流中的当前位置; 它只更改将由 getLineNumber() 返回的值

有的朋友可能觉得,这也叫装饰器模式么?

还是那句话

设计模式是作为解决问题或者设计类层级结构时的一种思维的存在,而不是公式一样的存在!

image_5b9a564e_6234
image_5b9a564e_6234

构造方法

LineNumberReader 继承了BufferedReader构造方法跟BufferedReader 一样内部也是直接super

其他方法

read以及readLine方法

仔细看下两个版本的read方法  以及 readLine方法他们都是super.XXX然后在此基础上提供了行号的功能

int read()           读取单个字符 int read(char[] cbuf, int off, int len)           将字符读入数组中的某一部分

readLine()           读取文本行

BufferedReader是支持标记的所以LineNumberReader也是自动支持了内部借助的也是super.XXX

也例行提供了skip里面的read 是super.read.....

总结

LineNumberReader本身并没有太多的东西,他是BufferedReader的子类

他的逻辑意义,非常典型简单的装饰器模式

是你还有你,一切拜托你,然后自己增加了点小功能

构造调用父类构造方法,里面的方法也都是借助于super.XXX

只不过增加了行号的功能

一定要记住,setLineNumber(int) 并不会改变流

只是改变内部的那个    private int lineNumber = 0;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能介绍
  • 构造方法
  • 其他方法
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档