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

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

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

  2. java io体系_java IO流的体系结构图

    常用字节流字符流 字节流   InputStream                                                                           ...

  3. java 类隔离_Java类装载体系中的隔离性

    正文 Java中类的查找与装载出现的问题总是会时不时出现在Java程序员面前,这并 不是什么丢脸的事情,相信没有一个Java程序员没遇到过ClassNotException,因此不要为被人瞅见自己也犯 ...

  4. java 循环关键字_Java循环结构_常量_关键字

    一.循环 定义:当满足一定条件的时候,重复执行某一段代码的操作 while.for.do...while是Java的循环 二.While循环 语法格式: int i = 0://初始化值 while( ...

  5. java课程体系_Java学习课程体系

    最近一直在忙项目和课程,每每当这个时候就会发现自己一直在忙,而在此过程中没有什么积累和沉淀,所以最近总结了一下,对于Java开发过程中所需要用到的技术点,后面有时间的话,会一一进行相应的课程录制,希望 ...

  6. java 拒绝访问_java.io.FileNotFoundException: ……(拒绝访问。)

    java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\jwgl00 ...

  7. java 数据流对比_Java IO流之字符流字节流区别

    java IO流主要是对字符字节的操作,企业应用比较广泛,比如最常见的导入导出.... 一.IO流的分类: 1.根据处理数据类型的不同分为:字符流(Reader,Writer)和字节流(InputSt ...

  8. java输入文件内容_java Io流向指定文件输入内容

    package com.hp.io; import java.io.*; public class BufferedWriterTest{ public static void main(String ...

  9. java 流 中文_Java IO流之中文乱码

    相信有过学过JavaEE的人们都有遇到过中文乱码问题吧,最简单的就是表单数据提交时中文出现乱码,乱码难解决吗?其实不难,只要掌握好编码的设置,乱码神马的一边去. 今天主要就讲讲一些常用的可以设置编码的 ...

最新文章

  1. 使用脚本完成AutoCAD自动化任务课程
  2. Spring选择哪种注入方式
  3. cisco最经典书籍 下载(全CCIE们的结晶)转载资料
  4. 交换机、路由器、PIX密码恢复
  5. Android——selector背景选择器的使用详解(二)
  6. 家里的狗为什么打不过猫
  7. 骆天涯:gunicorn部署Flask服务
  8. 使用花生壳做内网穿透
  9. xbox360fsd更新游戏封面_xbox360自制系统fsd更新封面教程
  10. 五合一建站系统YouDianCMS开源啦
  11. MySQL 中的定时任务
  12. nginx常用配置和用法
  13. 【从零搭建后端基础设施系列(九)】-- VM容器化
  14. 双搜----用两只眼睛看世界
  15. JAVA程序的逻辑控制及输入输出
  16. matlab 资料分享
  17. 前端埋点需求(vue.js)
  18. 4部网页配色电子书库之第4部——网站配色方案赏析
  19. 优酷android手机客户端for,优酷手机客户端
  20. wxml 点击图片下载_跟着做,零基础也能做出自己的小程序

热门文章

  1. GWT HTTP请求替代
  2. 类加载器 jboss_JBoss AS 7类加载说明
  3. 复习者-Java EE 7概览
  4. 开发人员对Spring vs JavaEE的看法
  5. 使用JMSTester对JMS层进行基准测试
  6. 集成Spring和JavaServer Faces:改进的模板
  7. 编写Play 2的模块,第1部分:使工作正常
  8. rabbitmq怎么停止_Windows环境下RabbitMQ的启动和停止命令
  9. 简短介绍_中秋节的来历由来简短20字30字 中秋节的起源50字100字简介
  10. 老人与海好词100英文带翻译_《老人与海》经典语录(英文+译文)