参考文章地址: http://blog.csdn.net/oracle_microsoft/article/details/2634231

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 体系结构相关推荐

  1. java+io体系结构图_Java IO 体系结构

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

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

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

  3. java io nio aio_Java IO、NIO、AIO知识总结

    本文主要讲述下自己对IO的理解,对IO的用法和细则可能没有顾虑到. 本文的理解基于以下几篇文章,他们对各自部分都讲的很细,对我理解IO提供了很大帮助. 该文主要讲解了Java IO的类体系以及他们各自 ...

  4. 【Java】9、Java IO 流

    文章目录 IO 流 什么是 IO 字节流 字节流概念 字节流读写文件 文件的拷贝 字节流的缓冲区 装饰设计模式 字节缓冲流 字符流 字符流定义及基本用法 字符流操作文件 转换流 File 类 File ...

  5. java的体系结构_java体系结构介绍

    1.JAVA体系结构说明 java体系结构包括四个独立相关的技术: java程序设计语言. java class 文件格式.java应用编程接口. java虚拟机. 当编写并运行一个java程序时,就 ...

  6. Java(2)-Java IO输入输出流

    一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...

  7. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...

    IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...

  8. java io的异常_Java 异常与IO流

    一.异常 想想一下代码会发生什么? public static voidmain(String[] args) {int a = 10;int b = 0; System.out.println(a/ ...

  9. Java IO 流 学习 总结

    I/O  主要是对文件进行处理, 其主要包含3个方面的内容 1 input 输入 2 out 出入 3 File 文件 Java 流的概念 流是一组有序的数据序列,流提供了一条通道程序,可以是这条通道 ...

最新文章

  1. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
  2. ubuntu18+Eclipse+CDT开发QT5界面程序
  3. java实现图形界面输入半径求圆面积_测试开发工程师系列之Android自动化测试Appium(Python)连载(7)安卓图形界面...
  4. python课堂整理9---函数1
  5. linux --- 基础指令
  6. 第5章 Python 数字图像处理(DIP) - 图像复原与重建4 - 指数噪声
  7. [UE4] Sequence 的某一条分支执行 delay 之后会继续执行下一条分支而不是停留在该分支
  8. python死锁案例_Python 多线程死锁
  9. numpy.outer
  10. 互联网扫描器 ZMap 完全手册
  11. i5-8300h和i7-8750h 那个好
  12. 2012年8月 至 2014年2月1日读书列表
  13. 录屏 java_Java小程序—录屏小程序(上半场)
  14. Ubuntu配置GPU版本pytorch环境(含NVIDIA驱动+Cuda+Cudnn)
  15. python中正实数怎么表示_是的”数学地板(x) “和”int(x)“在Python中对正实数产生不同的结果?...
  16. MSP430F5529LP(一)IIC与OLED的HELLOWRLD
  17. 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. Cesium 添加天地图三维地形
  19. dede常用标签(随时更新)
  20. 【表单】如何去掉input被点击选中时的黑色边框

热门文章

  1. 使用MySQL Proxy解决MySQL主从同步延迟
  2. 在ASP.NET中自动给URL地址加上超链接
  3. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
  4. Apache commons-io
  5. 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
  6. 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
  7. 【Ubuntu】VirtualBox+ubuntu中显示摄像头
  8. java 路径中文问题_Java 路径问题解决方案汇集
  9. pythonapi是什么_python接口自动化(一)--什么是接口、接口优势、类型(详解)...
  10. docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle