Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点:

1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是一套字节输入-输出,字符输入-输出体系

2. 原始处理器(适配器)与链接流处理器(装饰器)

其结构图如下:

Reader-Writer体系

1. 基类

InputStream与OutputStream是所有字节型输入输出流的基抽象类,同时也是适配器(原始流处理器)需要适配的对象,也是装饰器(链接流处理器)装饰对象的基类.

2. 原始流处理器

原始流处理器接收Byte数组对象,String对象,FileDescriptor对象将其适配成InputStream,以供其他装饰器使用,他们都继承自InputStream 包括如下几个:

ByteArrayInputStream: 接收Byte数组为流源,为多线程通信提供缓冲区操作功能

FileInputStream: 接收一个File作为流源,用于文件的读取

PipedInputStream: 接收一个PipedOutputStream,与PipedOutputStream配合作为管道使用

StringBufferInputStream: 接收一个String作为流的源(已弃用)

3. 链接流处理器

链接流处理器可以接收另一个流处理器(InputStream,包括链接流处理器和原始流处理器)作为源,并对其功能进行扩展,所以说他们是装饰器.

1) FilterInputStream继承自InputStream,是所有装饰器的父类,FilterInputStream内部也包含一个InputStream,这个InputStream就是被装饰类--一个原始流处理器,它包括如下几个子类:

BufferedInputStream: 用来将数据读入内存缓冲区,并从此缓冲区提供数据

DataInputStream: 提供基于多字节的读取方法,可以读取原始数据类型(Byte, Int, Long, Double等等)

LineNumberInputStream:  提供具有行计数功能的流处理器

PushbackInputStream:  提供已读取字节"推回"输入流的功能

2) ObjectInputStream: 可以将使用ObjectOutputStream写入的基本数据和对象进行反串行化

3) SequenceInputStream: 可以合并多个InputStream原始流,依次读取这些合并的原始流

对于OutputStream, Reader, Writer的体系结构也跟InputStream的结构类似

java io框架图_Java IO流体系继承结构图解析相关推荐

  1. Java集合类框架源码分析 之 LinkedList源码解析 【4】

    上一篇介绍了ArrayList的源码分析[点击看文章],既然ArrayList都已经做了介绍,那么作为他同胞兄弟的LinkedList,当然必须也配拥有姓名! Talk is cheap,show m ...

  2. 基于java洗浴中心管理系统_Java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  3. java io流填空题,java面试题选择题_java,Io流面试题和选择题

    Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象.下面就由小编为大家介绍一下java Io流面试题和选择题的文章,欢迎阅读. java ...

  4. java io 装饰者_Java IO 体系(一): 装饰者模式

    前言. IO中常见的使用方式 DataOutputStream out = new DataOutputStream( new BufferedOutputStream( new FileOutput ...

  5. java io 面试题_Java IO面试题及答案整理汇总

    说到Java开发,所有的java程序员都知道Java IO流,而且相信大家在具体的工作中也都会用到,但是其实很多朋友们并没有完全掌握java IQ流的内容,而且java IO在java 面试中也会考察 ...

  6. java集合类的框架图_Java集合框架01-框架总览

    本节摘要:从整体概述Java集合框架 一.Java集合框架架构图 Java集合框架是Java为开发者提供的工具类,集合框架被放置在 java.util.* 包下面,这些工具类从更高层面为开发者提供了数 ...

  7. java集合框架图(二)

    目录 前言 一.list与Set.Map 区别及适用场景 二.ArrayList与LinkedList的区别和适用场景 三.ArrayList与Vector的区别和适用场景 四.HashSet与Tre ...

  8. java集合框架图(一)

    一.集合类简介 Java集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)"丢进"该容器中.从Java 5 增加了泛型以后,Java集合可以记住容器中对象的数 ...

  9. java集合框架介绍_Java集合框架介绍

    Java集合框架介绍 发布时间:2020-06-26 17:00:14 来源:亿速云 阅读:85 作者:Leah 这篇文章将为大家详细讲解有关Java集合框架介绍,文章内容质量较高,因此小编分享给大家 ...

最新文章

  1. 从流感预测到智能决策,深度学习能帮企业做哪些事?
  2. 15 个让新手爱不释手的 Python 高级库
  3. android的listView组件
  4. python多功能文本编辑器_多功能文本编辑器(EditPad Pro)
  5. SSM中shiro的基本使用
  6. [react] React的事件和普通的HTML事件有什么不同
  7. 动态给实例添加属性和方法
  8. 任意点 曲线距离_中级数学11-曲线函数
  9. mysql语句怎么记_Mysql常用语句(记一下,免得忘)
  10. 【转】ASP.NET MVC框架下使用MVVM模式-KnockOutJS+JQ模板例子
  11. Ubuntu 禁用 触摸板
  12. spring 主从表_听听京东架构师浅谈,MySQL binlog 主从同步
  13. 递归存储过程中使用cursor
  14. Hive 开窗必需掌握的rankdense_rankrow_number
  15. 电池供电的电容麦_板儿砖变电池?!是的,科学家已成功实现这一功能
  16. 两台文件服务器共享文件同步,如何实现两台或多台电脑远程修改文件同步更新?...
  17. 萤火虫算法matlab实现,萤火虫算法,matlab代码.doc
  18. 关闭绿联硬盘盒子自动休眠的方法!
  19. 游山西村 陆游- 南宋
  20. 引入 ECharts和Bootstrap的bootcdn样式表路径

热门文章

  1. 软件项目风险评估计划
  2. 【Lua】哈夫曼树构造算法的分析与实现
  3. lotus 扇区生命周期
  4. 阿里巴巴和环球资源的粗略区别
  5. html css高度自适应浏览器高度,Div + CSS高度自适应解决方法_html/css_WEB-ITnose
  6. 卡巴司机如此重大bug为何视而不改?
  7. GitKraken 小章鱼使用教程
  8. [论文学习]3——在工业炼油中应用VM-SAE的案例分析
  9. HTTPS端口443被程序vmware-hostd.exe占用的解决
  10. 专科生从实习到现在两年,入行回顾和总结。 有收获,有失去,有遗憾,哪怕前路迷茫,仍要继续前行。