参考答案:
在 Java 中,I/O 流被分为两种类型:节点流(Terminal Stream)和 处理流(Filter Stream)。这两种流在 Java 的 I/O 系统中各有不同的角色和用途。
节点流(也称为 基础流)是直接操作数据源或数据目标的流。它们负责从实际的 I/O 设备(如文件、控制台、网络连接等)读取数据,或者将数据写入到这些设备。节点流提供了基本的 I/O 操作,如读取、写入和关闭。
FileInputStream、FileOutputStreamBufferedInputStream、BufferedOutputStreamObjectInputStream、ObjectOutputStreamFileReader、FileWriterBufferedReader、BufferedWriterPrintWriter处理流(也叫 包装流)是用来对节点流中的数据进行处理或转换的流。它们不是直接操作数据源或目标,而是通过包装一个现有的节点流(或其他处理流)来增加额外的功能,通常用于转换、缓冲或其他数据处理。
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