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

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

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

其结构图如下:

InputStream-OutputStream体系

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 mac系统io文件流_Java IO流基础1--IO的分类体系与文件流

    什么是IO流 Java中的IO 了解什么是IO流之前,要先知道什么是IO.IO,就是in和out(即输入和输出),指应用程序和外部设备之间的数据传递,常见的外部设备包括文件.管道.网络连接等. 流的概 ...

  2. java io字符流_Java IO流字符流简介及基本使用

    Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...

  3. linux read函数_浅谈Linux内核IO体系之磁盘IO

    前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...

  4. java io框架图_Java IO流体系继承结构图解析

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

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

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

  6. Java IO体系结构图

    输入流 输出流 InputStream系列是JDK1.0开始的,Reader系列是JDK1.1开始的 字节流中,常用的是FileInputStream和BufferedInputStream 字符流中 ...

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

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

  8. java中io流案例_Java IO流的简单使用 通俗易懂 超详细 【内含案例】

    IO流简单使用 输入和输出是相对于程序来说的,读取到程序中叫做输入,写到文件中叫输出. InputStream 字节输入流 InputStream 字节输入流基类,是字节输入流所有类的超类 // 从输 ...

  9. java io删除文件_java IO 文件操作方法总结

    java IO 文件操作方法总结 对于输入输出的理解: 输入输出,以程序为参考点,外部数据进入程序,通过输入流完成.程序将数据给外部设备,通过输出流完成. 文件Io的操作 //获取文件 File fi ...

最新文章

  1. Oracle timestamp 转换 date
  2. c语言输入后没答案,C语言章节习题及答案(无指针)解读.doc
  3. python 函数调用列表,函数调用列表的Python oneliner
  4. 在VMware虚拟机下安装ubuntu16.04,及hackrf one环境配置
  5. EZ 2018 07 06 NOIP模拟赛
  6. 文件上传下载小结一(转载)
  7. c++中堆、栈内存分配
  8. 分别用顺序表和链表实现队列
  9. 为什么监听不到开机广播action.BOOT_COMPLETED
  10. JDK源码(13)-Throwable
  11. 演示:思科交换机的Telnet管理与SSH管理
  12. 80%程序员不知道的职场秘诀,升职加薪不是梦
  13. 吴恩达神经网络和深度学习-学习笔记-37-inception网络
  14. virtualbox中实施ASM扩容实施记录
  15. Windows Server 2008 R2入门之FTP服务器
  16. PCL_点云数据处理方法概述
  17. 计算机组装与维护考试题a卷,计算机组装与维护考试题A卷.docx
  18. 10代cpu能装服务器系统不,第10代CPU可以装Windows7吗
  19. 4.Eclipse中使用SVN
  20. 瑞星2011:没有最新,只有更新

热门文章

  1. python数组拼接concat_Python xarray.concat然后xarray.to_netcdf生成巨大的新文件大小
  2. 监控mysql主从的工具_zabbix利用percona-toolkit工具监控Mysql主从同步状态
  3. python cprofile_python 中 cprofile 分析 多进程程序
  4. android javamail获取邮件太多太慢_「Java」 - SpringBoot amp; 邮件发送
  5. (转载)学习Javascript闭包(Closure)
  6. 无法远程连接阿里云的Mysql
  7. codeforces 735C Tennis Championship(贪心+递推)
  8. jQuery 的 ajax
  9. 1. rc 目录结构
  10. excel两个表格数据对比_两个Excel表格合并,最有水平的处理方法