JAVA小白菜——JAVA基础 IO篇(一):各种IO流的归纳和概述

    技术2023-06-16  90

    现在互联网高速发展,大家肯定听过NIO,BIO,AIO各种各样的柳机制。抱着学习的心态,去搞懂IO到底是啥。

    IO,I和O,IN和OUT的意思,用作数据的 输入(IN)和输出(OUT),IO是JAVA最早的包之一。

    IO分为 字节流以及字符流 从名字上看,两者的基本差别就是一个传输“字节”,一个传输“字符” 所以字节流以一个字节(8个bit)为单位,字符流以一个字符(2个字节,16个bit)为单位

    那么下面我们先按照字节流和字符流来分类总结 字节流 I部分 InputStream这是所有字节输入流的爸爸 它定下了三个主要的方法 abstract int read() int read(byte[] b) int read(byte[] b, int off, int len)

    然后我们可以通过节点流和处理流来再做分类 节点流——操作到内存,设备等的流 处理流——用来包装流,作特殊处理的流 两者明面区别就在于,构造的参数 这是节点流,操作对象是Btye 这是处理流,操作对象是流

    因为处理流是用来辅助别的节点流的,所以又叫装饰流,这种设计就涉及到了23种设计模式——装饰模式。

    其子类有 ByteArray InputStream 节点流——数组流 对称 File InputStream 节点流——文件流 对称 StringBuffer InputStream 节点流——字符已过时 Object InputStream 节点流——对象流 对称 Piped InputStream 节点流——管道流 对称

    Filter InputStream 这是处理流的爸爸 Pushback InputStream 处理流——推回 Data InputStream 处理流——数据流 对称 Buffered InputStream 处理流——缓存流 对称 LineNumber InputStream 处理流——行

    Sequence InputStream 这个按道理也是处理流的一种,网上喊序列流,他的作用是将两个流放在队列里一起输入,但是他直接继承于InputStream,而不是通常处理流的父类FilterInputStream

    O的部分 类同于InputStream,这里就不贴图了 OutputStream所有字节输出流的爸爸(或者爷爷) ByteArray OutputStream 节点流——数组流 对称 File OutputStream 节点流——文件流 对称 Object OutputStream 节点流 ——对象流 对称 Piped OutputStream 节点流——管道流 对称 Filter OutputStream Data OutputStream 处理流——数据流 对称 Buffered OutputStream 处理流——缓存流 对称 Print Stream 处理流——打印 OutputStream定下的核心方法是 abstract void write(int b) void write(byte[] b) void write(byte[] b, int off, int len)

    然后就是字符流 Reader字符输入流的爸爸 CharArray Reader 节点流——数组流 String Reader 节点流——字符串流 File Reader 节点流——文件流 Piped Reader 节点流——管道流 Filter Reader 处理流的爸爸 Buffered Reader 处理流——缓存 LineNumber Reader 处理流——行 Pushback Reader 处理流——推回 InputStream Reader 处理流——字节转换,但不属于Filter Reader

    Writer基本是与Reader对应的 Writer字符输出流的爸爸 CharArray Writer String Writer File Writer Piped Writer Filter Writer Buffered Writer OutputStream Writer Print Writer 综上可见节点流基本都是配对使用的,大部分的处理流也是。具体各种流的使用,在后面再逐一补充。 网上能搜到的继承关系的图片就不放了

    Processed: 0.069, SQL: 10