[十一]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 将文本写入字符输出流,内部缓冲各个字符,从而提供单个 ...
随机推荐
- VS2017无法发现单元测试,不能运行单元测试的解决方案
问题: 在VS2017中新建空的单元测试后,无法运行测试,即右键菜单的"运行测试"和"调试测试" 不能运行,在测试资源管理中也无法列出这个测试. 解决方案: 1 ...
- vs2012开发基于MFC的ActiveX控件
1.新建工程 2.一直点击下一步,直到出现一下界面,注意红色标注选项,点击完成. 3.进入工程的属性界面,设置工程属性 4.添加对话框资源及其他控件,添加对话框类, 5.设置对话框属性 6.设置Dia ...
- 【转】Python+opencv利用sobel进行边缘检测(细节讲解)
#! usr/bin/env python # coding:utf-8 # 2018年7月2日06:48:35 # 2018年7月2日23:11:59 import cv2 import numpy ...
- ip锁死怎么设置ip地址
单击电脑网络连接图标,打开网络和共享中心 点击本地连接 点击详细信息,即可看到IP地址.子网掩码.默认网关.DNS服务器信息 再点击本地连接状态下的属性 找到Internet 协议版本 ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(3)
四.Nova-compute 步骤17:nova-compute接收到请求后,通过Resource Tracker将创建虚拟机所需要的资源声明占用 步骤18:调用Neutron API配置Networ ...
- 一文读懂四种常见的XML解析技术
之前的文章我们讲解了<XML系列教程之Schema技术_上海尚学堂java培训技术干货><XML的概念.特点与作用.XML申明_上海Java培训技术干货>,大家可以点击回顾一下 ...
- [Swift]LeetCode463. 岛屿的周长 | Island Perimeter
You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represen ...
- [Swift]LeetCode605. 种花问题 | Can Place Flowers
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...
- MySQL数据库导入或者同步大量数据时数据丢失解决方案
相信大家都经常遇到这样的情况,我们在编码的过程中经常需要在调试代码的时候切换到本地的数据库上做修改调试,如果当测试数据库的数据在几十万或者上百万数据的时候,我们无论是通过恢复备份/导入SQL的方式来把 ...
- Python 实现获取微信好友信息
最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...


