Java中的IO(输入/输出)系统主要可以分为以下几类:
1. 按照数据流向分类
-
输入流(Input Stream):用于从数据源读取数据
-
如:
InputStream,Reader
-
-
输出流(Output Stream):用于向目标写入数据
-
如:
OutputStream,Writer
-
2. 按照操作数据类型分类
-
字节流(Byte Stream):以字节(8位)为单位操作数据
-
抽象基类:
InputStream和OutputStream -
适用于二进制文件(如图片、音频、视频等)
-
-
字符流(Character Stream):以字符(16位Unicode)为单位操作数据
-
抽象基类:
Reader和Writer -
适用于文本文件,能正确处理字符编码
-
3. 按照功能角色分类
-
节点流(Node Stream):直接与数据源/目的地连接的流
-
如:
FileInputStream,FileReader
-
-
处理流/包装流(Processing Stream):对已存在的流进行包装,提供增强功能
-
如:
BufferedInputStream,BufferedReader,DataInputStream
-
4. 按照IO模型分类(Java 1.4+)
-
BIO(Blocking IO):传统的同步阻塞IO
-
NIO(Non-blocking IO/New IO):非阻塞IO,基于通道(Channel)和缓冲区(Buffer)
-
核心类:
Channel,Buffer,Selector
-
-
AIO(Asynchronous IO):异步非阻塞IO(Java 7引入)
-
基于回调机制
-
5. 常见IO类
字节流
-
FileInputStream/FileOutputStream- 文件字节流 -
ByteArrayInputStream/ByteArrayOutputStream- 字节数组流 -
BufferedInputStream/BufferedOutputStream- 缓冲字节流 -
DataInputStream/DataOutputStream- 基本数据类型流 -
ObjectInputStream/ObjectOutputStream- 对象序列化流
字符流
-
FileReader/FileWriter- 文件字符流 -
CharArrayReader/CharArrayWriter- 字符数组流 -
BufferedReader/BufferedWriter- 缓冲字符流 -
InputStreamReader/OutputStreamWriter- 字节字符转换流 -
PrintWriter- 打印流
Java的IO系统设计采用了装饰器模式,可以通过组合不同的流类来实现复杂的功能。
2581

被折叠的 条评论
为什么被折叠?



