什么是 IO
- Java 中 I/O 操作主要是指使用
java.io包下的内容,进行输入、输出操作 - 输入也叫做读取数据,输出也叫做作写出数据
IO 的分类
根据数据的流向分为:输入流和输出流
- 输入流 :把数据从
其他设备上读取到内存中的流- 以 InputStream、Reader结 尾
- 输出流 :把数据从
内存中写出到其他设备上的流- 以 OutputStream、Writer 结尾
根据数据的类型分为:字节流和字符流
- 字节流 :以字节为单位,读写数据的流
- 以 InputStream、OutputStream 结尾
- 字符流 :以字符为单位,读写数据的流
- 以 Reader、Writer 结尾
根据IO流的角色不同分为:节点流和处理流
- 节点流:可以从或向一个特定的地方(节点)读写数据
- 处理流:是对一个已存在的流进行连接和封装,通过所封装的流的功能调用实现数据读写;处理流的构造方法总是要带一个其他的流对象做参数,一个流对象经过其他流的多次包装,称为流的链接
这种设计是装饰模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),其使用一种对客户端透明的方式来动态地扩展对象的功能,它是通过继承扩展功能的替代方案之一在现实生活中你也有很多装饰者的例子,例如:人需要各种各样的衣着,不管你穿着怎样,但是,对于你个人本质来说是不变的,充其量只是在外面加上了一些装饰,有,“遮羞的”、“保暖的”、“好看的”、“防雨的”….
常用的节点流
对文件进行处理的节点流
FileInputStreamFileOutputStreanFileReaderFileWriter
对字符串进行处理的节点流
StringReaderStringWriter
对数组进行处理的节点流
对应的不再是文件,而是内存中的一个数组
ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter
对管道进行处理的节点流
PipedInputStreamPipedOutputStreamPipedReaderPipedWriter
常用处理流
缓冲流
增加缓冲功能,避免频繁读写硬盘
BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
转换流
实现字节流和字符流之间的转换
InputStreamReaderOutputStreamReader
数据流
提供读写 Java 基础数据类型功能
DataInputStreamDataOutputStream
对象流
提供直接读写Java对象功能
ObjectInputStreamObjectOutputStream
4 大顶级抽象父类们
| 输入流 | 输出流 | |
|---|---|---|
| 字节流 | 字节输入流 InputStream | 字节输出流 OutputStream |
| 字符流 | 字符输入流 Reader | 字符输出流 Writer |
