IO流概述
![](https://i-blog.csdnimg.cn/blog_migrate/75f83ac1a083181e711107ea92ff4a96.png)
io流类结构如上图,具体各类用途如下:
类型 | 抽象类 | 具体实现类 | 原理概述 |
---|---|---|---|
字节流 | InputStream, OutputStream | ByteArrayInputStream, ByteArrayOutputStream | 字节数组流;内部提供数组,输入流通过构造函数接收外部数组信息,提供read方法供读取;输出流通过write方法接收字节,存入内部数组,输出流通过toByteArray获取写入的字节数组,通过toString()获取字节数组对应的字符串,toString方法可指定编码,不指定则按默认字符集转码;输出流内部字节数组默认长32,按2倍扩容。 |
InputStream, OutputStream | FileInputStream, FileOutputStream | 字节文件流;按字节读取文件,写入文件 | |
InputStream, OutputStream | ObjectInputStream, ObjectOutputStream | 对象流;提供对象反序列化,序列化功能 | |
InputStream, OutputStream | PipedInputStream, PipedOutputStream | 字节管道流,线程间通讯使用;通过构造函数或者connect方法,输入流与输出流建立连接;输出流的write方法被调用时,会调用与之连接的输入流的receive方法,将字节写入到输入流对象的字节缓存数组中;输入流通过read方法,读取字节缓存数组中的数据 | |
InputStream | SequenceInputStream | 顺序输入流;按顺序读取多个输入流 | |
InputStream, OutputStream | FilterInputStream, FilterOutputStream | 不添加任何新方 |