[十一]JavaIO之DataInputStream 和 DataOutputStream
| FilterInputStream以及FilterOutputStream 都是Decorator 抽象的装饰器角色(并不是抽象类) 他们内部都包含了各自需要增强的抽象构建 |
|
| DataInput | 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构 |
|
DataOutput
|
接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流 |
![]() |
|
| DataInputStream和DataOutputStream 通过实现DataInput 和DataOut接口 并且借助于装饰器模式,对InputStream和OutputStream的read方法增强出来多个版本 可以读取基本数据类型 |
|
继承自InputStream中的read的两个版本方法
都是直接使用原方法
|
| 可以看到,去掉read和个别独有的方法外 其余方法都来自DataInput ![]() |
| 而其他的方法都是需要依赖于read的两个版本的方法 比如下面这几个,都是对in.read调用的基础上,进行功能的增强 如果说都不使用in.read方法,那还叫什么装饰器模式
|
| write两个版本都来自OutputStream,没有功能增强 flush也是如此,没有增强
不过DataOutputStream 内部有一个计数器,用于记录已经读取的个数
incCount方法用于计数
|
其余来自DataOutput的方法,都是借助于装饰器模式对于write方法的增强![]() 比如
|
| 一定要理解装饰器模式 是你还有你 在使用你的能力的时候,顺便在增强一下,所以内部自然会需要借助于原来的方法 |
| 两条主线: 装饰器模式功能增强 增强的功能来自DataXXXput接口 |
[十一]JavaIO之DataInputStream 和 DataOutputStream的更多相关文章
- Java IO(十一) DataInputStream 和 DataOutputStream
Java IO(十一) DataInputStream 和 DataOutputStream 一.介绍 DataInputStream 和 DataOutputStream 是数据字节流,分别继承自 ...
- DataInputStream和DataOutputStream使用方法细节探讨
DataInputStream和DataOutputStream都是Java中输入输出流的装饰类,用起来非常方便.今天就来讨论一下使用该类时候遇到的编码问题. package com.vince ...
- java下DataInputStream与DataOutputStream写入数据的同时写入数据类型
package cn.stat.p2.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import jav ...
- 将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出
三组数据如下: {19.99 , 9.99 , 15.99 , 3.99 , 4.99} {12 , 8 , 13 ,29 ,50} {"Java T-shirt" , " ...
- Java之IO(四)DataInputStream和DataOutputStream
转载请注明源出处:http://www.cnblogs.com/lighten/p/6986155.html 1.前言 DataInputStream和DataOutputStream分别继承了Fil ...
- java代码----------实现创建DataInputStream和DataOutputStream进行读写
总结: 主要是 捕获异常 package com.a.b; import java.io.*; public class testData { public static void main(Stri ...
- DataInputStream和DataOutputStream
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInp ...
- java io流 数据流 DataInputStream、DataOutputStream、ByteArrayInputStream、ByteArrayOutputStream
例子程序: package io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import ...
- [二十一]JavaIO之BufferedReader 与 BufferedWriter
功能简介 BufferedReader 从字符输入流中读取文本,内部缓冲各个字符,从而实现字符.数组和行的高效读取 BufferedWriter 将文本写入字符输出流,内部缓冲各个字符,从而提供单个 ...
随机推荐
- PPT vba从Execl 拷贝图表
在PPT 需要引用Execl的COM组件 Dim wkb As Workbook Sub Change() Set wkb = Workbooks.Open("D:\D2_月报基础数据.xl ...
- VB用API模拟截屏键PrintScreen
很多人用 SendKeys "{PRTSC}" 模拟截屏键 PrintScreen 的时候提示<错误:'70' 拒绝的权限>,于是经常遇到人问...干脆写下来 '声明 ...
- 编程菜鸟的日记-《软件测试》Ron Patton著-读书笔记
第一部分 软件测试综述 第一章 软件测试的背景 1.软件测试员的目标:尽可能早地找到软件缺陷,并确保其能得以修复. 2.仅仅测试程序是否按预期方式运行有何问题:程序能完好的跑通并不代表软件不存在缺陷, ...
- vbs脚本实现qq定时发消息(初级)
vbs脚本实现QQ消息定时发送 目标 批处理又称为批处理脚本,强大的强大功能可以高效得实现很多功能,例如批量更改文件格式,批量进行文件读写,今天我们的目标是用vbs脚本编写可以发送qq消息的脚本,并利 ...
- zepto.js-定制zepto步骤
对以上步骤作简单补充 步骤四:在电脑左下角搜索Node.js command prompt 打开这个命令窗口,然后进入zepto-master 即文件存放的位置.也可以直接用cmd进入zepto-ma ...
- python爬虫第五天
cookie 我们访问网页是通过http协议进行的,而http协议是一个无状态协议(无法维持会话之间的状态),比如我们登录一个网站成功后访问另一个网页,那么登录状态 ...
- AWS MVC 详解
由于新工作是在AWS PaaS平台上进行开发,为不耽误工作,先整理一下AWS MVS的使用规范,快速上手.对AWS PaaS平台的相关介绍留到以后再来补充.本文几乎是对官方学习文档的整理,有遗漏的后补 ...
- centos7zabbix-agen安装
安装包下载地址:http://www.zabbix.com/download.php 下载对应rpm包 http://repo.zabbix.com/zabbix/ wget http://r ...
- js根据顺序加载,有依赖关系
function loadScript(url, callback) { var script = document.createElement("script"); script ...
- 配置 RIPv1 和 RIPv2
拓扑图 场景您是公司的网络管理员.您所管理的小型网络中包含三台路由器,并规划了五个网络.您需要在网络中配置RIP路由协议来实现路由信息的相互传输.最初使用的是RIPv1,后来发现RIPv2更有优势,于 ...


