参考答案:
在 Java 中,I/O 流被分为两种类型:节点流(Terminal Stream)和 处理流(Filter Stream)。这两种流在 Java 的 I/O 系统中各有不同的角色和用途。
节点流(也称为 基础流)是直接操作数据源或数据目标的流。它们负责从实际的 I/O 设备(如文件、控制台、网络连接等)读取数据,或者将数据写入到这些设备。节点流提供了基本的 I/O 操作,如读取、写入和关闭。
FileInputStream
、FileOutputStream
BufferedInputStream
、BufferedOutputStream
ObjectInputStream
、ObjectOutputStream
FileReader
、FileWriter
BufferedReader
、BufferedWriter
PrintWriter
处理流(也叫 包装流)是用来对节点流中的数据进行处理或转换的流。它们不是直接操作数据源或目标,而是通过包装一个现有的节点流(或其他处理流)来增加额外的功能,通常用于转换、缓冲或其他数据处理。
BufferedInputStream
、BufferedOutputStream
:用于缓冲数据流,增加读取和写入效率。DataInputStream
、DataOutputStream
:用于读写 Java 基本数据类型。ObjectInputStream
、ObjectOutputStream
:用于对象的序列化与反序列化。GZIPInputStream
、GZIPOutputStream
:用于压缩和解压缩数据。BufferedReader
、BufferedWriter
:用于缓冲字符数据,提升性能。PrintWriter
:用于格式化输出,支持自动刷新。InputStreamReader
、OutputStreamWriter
:用于字符与字节流之间的转换。BufferedReader
、BufferedWriter
、BufferedInputStream
)提升读取和写入效率。InputStreamReader
、OutputStreamWriter
)将字节流与字符流之间进行转换。DataInputStream
、DataOutputStream
)用于按固定格式读写基本数据类型。ObjectInputStream
、ObjectOutputStream
)用于序列化和反序列化 Java 对象。处理流是包装或装饰流:
BufferedReader
是包装了 FileReader
,ObjectOutputStream
是包装了 FileOutputStream
。处理流用于增强或转换数据:
BufferedReader
可以增强读取字符流的性能,DataInputStream
可以处理基本数据类型的读写。可以链式创建:
BufferedReader
可以包装在 InputStreamReader
中,ObjectOutputStream
可以包装在 BufferedOutputStream
中。关闭顺序:
try-with-resources
语句中,Java 会自动按顺序关闭这些流。最近更新时间:2024-12-24