zoukankan      html  css  js  c++  java
  • 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的结构类似

  • 相关阅读:
    Bootstrap--模仿官网写一个页面
    【ASP.NET基础】客户端、服务器端的数据验证 + CKEditer
    初识--Ajax & Json
    ASP.NET 状态的传递和保存
    启动项目报错org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loadT
    Oracle数据库导不进去
    Tomcat一闪就退
    Oracle提示已连接到空闲的实例
    创建数据库表空间
    cmd命令导入.dmp文件
  • 原文地址:https://www.cnblogs.com/zemliu/p/3269015.html
Copyright © 2011-2022 走看看