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

[十一]JavaIO之DataInputStream 和 DataOutputStream

作者头像
noteless
发布2018-09-14 14:49:06
4980
发布2018-09-14 14:49:06
举报
文章被收录于专栏:notelessnoteless

功能简介

DataInputStream和DataOutputStream 继承了各自的FilterInputStream以及FilterOutputStream

使用装饰器模式对InputStream和OutputStream进行功能增强

FilterInputStream以及FilterOutputStream 都是Decorator 抽象的装饰器角色(并不是抽象类)他们内部都包含了各自需要增强的抽象构建

DataInput

接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构

DataOutput

接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流

DataInputStream和DataOutputStream  通过实现DataInput 和DataOut接口并且借助于装饰器模式,对InputStream和OutputStream的read方法增强出来多个版本可以读取基本数据类型

DataInputStream

继承自InputStream中的read的两个版本方法 都是直接使用原方法

可以看到,去掉read和个别独有的方法外其余方法都来自DataInput

而其他的方法都是需要依赖于read的两个版本的方法比如下面这几个,都是对in.read调用的基础上,进行功能的增强如果说都不使用in.read方法,那还叫什么装饰器模式

DataOutputStream

write两个版本都来自OutputStream,没有功能增强flush也是如此,没有增强 不过DataOutputStream 内部有一个计数器,用于记录已经读取的个数 incCount方法用于计数

其余来自DataOutput的方法,都是借助于装饰器模式对于write方法的增强比如

一定要理解装饰器模式是你还有你在使用你的能力的时候,顺便在增强一下,所以内部自然会需要借助于原来的方法

总结:

DataInputStream和DataOutputStream 借助于装饰器模式,继承自他们的FilterXXXoutStream

对InputStream进行功能增强

所有增强出来的功能,来自于DataInput以及DataOutput

这两个接口是用于约定 从二进制字节中读取数据 以及将基本类型数据写入到二进制字节的两个接口

其实如果说要不是别的地方也还是需要DataInput以及DataOutput中的约定的话

这一切完全都可以去掉这两个接口,直接提供readXXX 或者writeXXX方法即可

所以千万不要被DataInput以及DataOutput 迷惑

两条主线:装饰器模式功能增强增强的功能来自DataXXXput接口

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档