BIO流分类介绍
Java IO(BIO)流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,彼此之间存在非常紧密的联系,按照不同概念可以分为不同类型:
-
按照流的流向,可以分为输入流和输出流。
数据的来源可以是硬盘、内存、网络、外部的输入设备。
-
输入流
数据从外部流入到程序中。
-
输出流
数据从程序流出到其他地方
-
-
按照操作单元划分,可以划分为字节流和字符流。
-
字节流
传输数据的最基本单位是字节(byte[]) 如:
- 字节输入流
InputStream
- 字节输出流
OutputStream
- 字节输入流
-
字符流
传输数据的最基本单位是字符(char)如:
字符输入流
Reader
字符输出流
Writer
【注】以上四种基本流都是抽象类
-
-
按照流的角色划分,可以划为节点流和处理流。
-
节点流
可以从/向一个特定的地方(节点)读/写数据。如:
-
文 件
FileInputStream FileOutputStrean FileReader FileWriter
对文件进行处理的节点流。
-
字符串
StringReader StringWriter
对字符串进行处理的节点流。
-
数 组
ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
-
管 道
PipedInputStream PipedOutputStream PipedReaderPipedWriter
对管道进行处理的节点流。
-
-
处理流
对一个已存在的流的链接和封装,通过所封装的流的功能调用实现数据读写。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 如:
-
缓冲流:
BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter
增加缓冲功能,避免频繁读写硬盘。
-
转换流:
InputStreamReader OutputStreamReader
实现字节流和字符流之间的转换。
-
数据流
DataInputStream DataOutputStream
提供将基础数据类型写入到文件中,或者读取出来。
-
-
java I0流的40多个类都是从如下4个抽象类基类中派生出来的。
- InputStream:所有的字节输入流的基类
- Reader:所有的字符输入流的基类
- OutputStream:所有的字节输出流的基类
- Writer:所有的字符输出流的基类