Java IO 体系结构
参考文章地址: 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 体系结构相关推荐
- java+io体系结构图_Java IO 体系结构
Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...
- java io框架图_Java IO流体系继承结构图解析
Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...
- java io nio aio_Java IO、NIO、AIO知识总结
本文主要讲述下自己对IO的理解,对IO的用法和细则可能没有顾虑到. 本文的理解基于以下几篇文章,他们对各自部分都讲的很细,对我理解IO提供了很大帮助. 该文主要讲解了Java IO的类体系以及他们各自 ...
- 【Java】9、Java IO 流
文章目录 IO 流 什么是 IO 字节流 字节流概念 字节流读写文件 文件的拷贝 字节流的缓冲区 装饰设计模式 字节缓冲流 字符流 字符流定义及基本用法 字符流操作文件 转换流 File 类 File ...
- java的体系结构_java体系结构介绍
1.JAVA体系结构说明 java体系结构包括四个独立相关的技术: java程序设计语言. java class 文件格式.java应用编程接口. java虚拟机. 当编写并运行一个java程序时,就 ...
- Java(2)-Java IO输入输出流
一.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读 ...
- java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...
IO流 一.File类的使用 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关 File能新建.删除.重命名文件和目录,但File不能访问文件内容本身.如果需要访问文件内容本身 ...
- java io的异常_Java 异常与IO流
一.异常 想想一下代码会发生什么? public static voidmain(String[] args) {int a = 10;int b = 0; System.out.println(a/ ...
- Java IO 流 学习 总结
I/O 主要是对文件进行处理, 其主要包含3个方面的内容 1 input 输入 2 out 出入 3 File 文件 Java 流的概念 流是一组有序的数据序列,流提供了一条通道程序,可以是这条通道 ...
最新文章
- Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
- ubuntu18+Eclipse+CDT开发QT5界面程序
- java实现图形界面输入半径求圆面积_测试开发工程师系列之Android自动化测试Appium(Python)连载(7)安卓图形界面...
- python课堂整理9---函数1
- linux --- 基础指令
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建4 - 指数噪声
- [UE4] Sequence 的某一条分支执行 delay 之后会继续执行下一条分支而不是停留在该分支
- python死锁案例_Python 多线程死锁
- numpy.outer
- 互联网扫描器 ZMap 完全手册
- i5-8300h和i7-8750h 那个好
- 2012年8月 至 2014年2月1日读书列表
- 录屏 java_Java小程序—录屏小程序(上半场)
- Ubuntu配置GPU版本pytorch环境(含NVIDIA驱动+Cuda+Cudnn)
- python中正实数怎么表示_是的”数学地板(x) “和”int(x)“在Python中对正实数产生不同的结果?...
- MSP430F5529LP(一)IIC与OLED的HELLOWRLD
- 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...
- Cesium 添加天地图三维地形
- dede常用标签(随时更新)
- 【表单】如何去掉input被点击选中时的黑色边框
热门文章
- 使用MySQL Proxy解决MySQL主从同步延迟
- 在ASP.NET中自动给URL地址加上超链接
- ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)
- Apache commons-io
- 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
- 【C++】C++11 STL算法(七):排列操作(Permutation operations)、数值操作(Numeric operations)
- 【Ubuntu】VirtualBox+ubuntu中显示摄像头
- java 路径中文问题_Java 路径问题解决方案汇集
- pythonapi是什么_python接口自动化(一)--什么是接口、接口优势、类型(详解)...
- docker 离线安装 mysql_Oracle数据库之docker 离线环境安装oracle