【jdk包系列】jdk源码包 java.io详解

本文详细解读了JavaJDK源码中的java.io包,涉及接口如Closeable、DataInput/Output、Externalizable等,类如BufferedInputStream/OutputStream、FileReader/FileWriter等,以及异常处理机制,展示了Java系统输入输出的核心组件和序列化规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jdk源码包 java.io详解

通过数据流、序列化和文件系统提供系统输入和输出。
详见:描述

接口概览

接口描述
Closeable可关闭的数据源或目标。
DataInputDataInput 接口提供了从二进制流中读取字节并将其转换为任何 Java 基本类型数据的功能。
DataOutputDataOutput 接口提供了将任何 Java 基本类型数据转换为一系列字节,并将这些字节写入二进制流的功能。
ExternalizableExternalizable 实例在序列化流中只写入类的身份,并且该类负责保存和恢复其实例的内容。
FileFilter抽象路径名的过滤器。
FilenameFilter实现此接口的类的实例用于过滤文件名。
Flushable可刷新的数据目标。
ObjectInputObjectInput 扩展了 DataInput 接口,包括读取对象的功能。
ObjectInputValidation回调接口,允许对图形中的对象进行验证。
ObjectOutputObjectOutput 扩展了 DataOutput 接口,包括写入对象的功能。
ObjectStreamConstants写入对象序列化流的常量。
Serializable类实现 java.io.Serializable 接口,启用该类的可序列化性。

类概览

描述
BufferedInputStreamBufferedInputStream 为另一个输入流(即具有缓冲区的能力)添加了功能,支持标记和重置方法。
BufferedOutputStream实现了缓冲输出流。
BufferedReader从字符输入流中读取文本,通过缓冲字符以提供对字符、数组和行的高效读取。
BufferedWriter向字符输出流写入文本,通过缓冲字符以提供对单个字符、数组和字符串的高效写入。
ByteArrayInputStreamByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含可从流中读取的字节。
ByteArrayOutputStreamByteArrayOutputStream 实现了一个向字节数组写入数据的输出流。
CharArrayReaderCharArrayReader 实现了可以用作字符输入流的字符缓冲区。
CharArrayWriterCharArrayWriter 实现了可以用作 Writer 的字符缓冲区。
Console用于访问基于字符的控制台设备(如果有)与当前 Java 虚拟机关联的方法。
DataInputStreamDataInputStream 允许应用程序以与机器无关的方式从底层输入流中读取原始 Java 数据类型。
DataOutputStreamDataOutputStream 允许应用程序以便携的方式将原始 Java 数据类型写入输出流。
File文件和目录路径名的抽象表示。
FileDescriptorFileDescriptor 类的实例充当表示打开文件、打开套接字或另一种源或接收字节的底层机器特定结构的不透明句柄。
FileInputStreamFileInputStream 从文件系统中的文件获取输入字节。
FileOutputStream文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。
FilePermission此类表示对文件或目录的访问权限。
FileReader用于读取字符文件的便捷类。
FileWriter用于写入字符文件的便捷类。
FilterInputStreamFilterInputStream 包含某个其他输入流,它将其作为基本数据源,并在可能的情况下在数据传输过程中转换数据或提供附加功能。
FilterOutputStreamFilterOutputStream 是所有过滤输出流类的超类。
FilterReader过滤器字符输入流的抽象类。
FilterWriter过滤器字符输出流的抽象类。
InputStreamInputStream 是字节输入流的所有类的超类。
InputStreamReaderInputStreamReader 是字节流到字符流的桥梁:它使用指定的字符集读取字节并将其解码为字符。
LineNumberInputStream已弃用。此类错误地假定字节足够表示字符。
LineNumberReader跟踪行号的缓冲字符输入流。
ObjectInputStreamObjectInputStream 反序列化以前使用 ObjectOutputStream 写入的原始数据和对象。
ObjectInputStream.GetField提供对从输入流中读取的持久字段的访问。
ObjectOutputStreamObjectOutputStream 将原始数据类型和 Java 对象图形写入 OutputStream。
ObjectOutputStream.PutField提供对要写入 ObjectOutput 的持久字段的编程访问。
ObjectStreamClass类的序列化描述符。
ObjectStreamField序列化类的可序列化字段的描述。
OutputStreamOutputStream 是字节输出流的所有类的超类。
OutputStreamWriterOutputStreamWriter 是字符流到字节流的桥梁:写入其中的字符使用指定的字符集编码为字节。
PipedInputStream管道输入流应连接到管道输出流;然后,管道输入流提供写入管道输出流的任何数据字节。
PipedOutputStream可以将管道输出流连接到管道输入流以创建通信管道。
PipedReader管道字符输入流。
PipedWriter管道字符输出流。
PrintStreamPrintStream 添加了功能到另一个输出流,即便地方能够方便地打印各种数据值的表示形式。
PrintWriter将对象的格式化表示形式打印到文本输出流。
PushbackInputStreamPushbackInputStream 添加了功能到另一个输入流,即“推回”或“未读取”一个字节。
PushbackReader可以将字符推回到流中的字符流阅读器。
RandomAccessFile此类的实例同时支持读和写的随机访问文件。
Reader用于读取字符流的抽象类。
SequenceInputStreamSequenceInputStream 表示其他输入流的逻辑串联。
SerializablePermissionSerializable 权限的类。
StreamTokenizerStreamTokenizer 类接受输入流并将其解析为“标记”,允许逐个读取标记。
StringBufferInputStream已弃用。此类无法正确将字符转换为字节。
StringReader其源是字符串的字符流。
StringWriter将其输出收集到字符串缓冲区中的字符流。
Writer用于写入字符流的抽象类。

异常概览

异常描述
CharConversionException字符转换异常的基类。
EOFException表示在输入过程中意外到达文件末尾或流末尾。
FileNotFoundException表示尝试打开指定路径名的文件失败。
InterruptedIOException表示 I/O 操作被中断。
InvalidClassException在序列化运行时检测到 Class 的以下问题时抛出。
InvalidObjectException表示一个或多个反序列化对象未通过验证测试。
IOException表示发生了某种类型的 I/O 异常。
NotActiveException当序列化或反序列化不处于活动状态时抛出。
NotSerializableException当要求实例具有 Serializable 接口时抛出。
ObjectStreamException所有特定于对象流类的异常的超类。
OptionalDataException由于未读取原始数据或流中序列化对象的数据结束,导致对象读取操作失败的异常。
StreamCorruptedException当从对象流中读取的控制信息违反了内部一致性检查时抛出。
SyncFailedException表示同步操作失败。
UncheckedIOException使用未检查的异常包装 IOException。
UnsupportedEncodingException不支持的字符编码。
UTFDataFormatException表示在数据输入流中读取到了格式错误的修改 UTF-8 格式的字符串,或者由实现数据输入接口的任何类读取到了格式错误的字符串。
WriteAbortedException表示在写操作期间抛出了 ObjectStreamExceptions 中的一个异常。

错误概览

错误描述
IOError发生严重 I/O 错误时抛出。

包 java.io 描述

通过数据流、序列化和文件系统提供系统输入和输出。除非另有说明,在此包中的任何类或接口的构造函数或方法中将 null 参数传递给会导致抛出 NullPointerException。

包规范

Java 对象序列化规范

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值