java.io是Java编程语言中处理输入输出(I/O)操作的核心类库,定义了数据流模型与多种接口,支持文件操作、网络通信及对象序列化等功能。其通过流(Stream)机制实现数据传输,涵盖字节流、字符流与缓冲处理等设计,为Java标准库的重要组成部分。
该库将数据源抽象为输入流和输出流,按传输方向分为输入型与输出型,按单位分为字节流(8位字节处理)与字符流(16位字符处理)。功能上包含直接操作设备的节点流和增强功能的过滤流,核心类包括InputStream、OutputStream、Reader、Writer四个抽象类及其子类,形成分层结构的I/O处理体系。
java.io自Java早期版本引入后逐步扩展功能,覆盖标准输入输出、文件交互、内存数据流及压缩处理等场景,并在版本迭代中保持向后兼容性。例如,在Java17+环境中可通过参数配置开放其模块访问权限以支持跨版本兼容性处理 [2]。
- 外文名
- java.io
- 通 过
- 数据流、序列化
- 目 的
- 提供系统输入和输出。
原理
播报编辑
Java把这些不同来源和目标的数据都统一抽象为数据流。Java语言的输入输出功能是拜喇欠十分强大而灵活的,美中不足的是凳骗看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。
分类
按流向分
输入流: 程序可以从中读取数据的流。
输出流: 程序能向其中写入数据的流。
按数据传输单位分
字节流: 以字节为单位传输数据的流
字符流: 以字符为单位传输数据的应脚说流
按功能战颈分
节点流: 用于直接操作目标设备的流
过滤流: 是对一个已存在的流的链接和封装,通过对数据进行处理为程序提供功能强大、灵活的读写功能。
常用类
JDK所提供的所有流类位于java.io包中,都分别继承自以下四种抽象流类。
OutputStream:继承自OutputStream的流都是程序用于向外输出数据的,且数据单位都是字节(8位)。
Writer:继承自Writer的流都是程序用于向外输出数据的,且数据单位都是字符(16整笑元位)。
接口摘要
Closeable | Closeable 是可以关闭的数据源或目标。 |
DataInput | DataInput 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构。 |
DataOutput | |
Externalizable | |
FileFilter | 用于抽象路径名的过滤器。 |
FilenameFilter | 实现此接口的类实例可用于过滤器文件名。 |
Flushable | Flushable 是可刷新数据的目标地。 |
ObjectInput | |
ObjectInputValidation | |
ObjectOutput | ObjectOutput 扩展 DataOutput 接口以包含对象的写入操作。 |
ObjectStreamConstants | 写入 Object Serialization Stream 的常量。 |
Serializable |
类摘要
BufferedInputStream | |
BufferedOutputStream | 该类实现缓冲的输出流。 |
BufferedReader | 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 |
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 | |
ByteArrayInputStream | ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。 |
ByteArrayOutputStream | 此类实现了一个输出流,其中的数据被写入一个 byte 数组。 |
CharArrayReader | |
CharArrayWriter | 此类实现一个可用作 Writer 的字符缓冲区。 |
数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。 | |
DataOutputStream | 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。 |
File | 文件和目录路径名的抽象表示形式。 |
FileDescriptor | |
FileInputStream | FileInputStream 从文件系统中的某个文件中获得输入字节。 |
文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。 | |
FilePermission | 此类表示对文件和目录的访问。 |
FileReader | 用来读取字符文件的便捷类。 |
用来写入字符文件的便捷类。 | |
FilterInputStream | |
FilterReader | |
FilterWriter | 用于写入已过滤的字符流的抽象类。 |
InputStreamReader | InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。 |
LineNumberInputStream | 已过时。此类错误假定字节能充分表示字符。 |
[1]
描述
播报编辑
流
播报编辑
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。