Java I/O与NIO系统全面解析
1. Java传统I/O中的对象输入与序列化
在Java的传统I/O体系里,对象输入和序列化是重要的功能。
1.1 ObjectInput接口
ObjectInput接口继承自DataInput和AutoCloseable接口,它支持对象序列化。该接口定义了一系列方法,这些方法在出错时会抛出IOException,其中readObject()方法用于反序列化对象,此方法还可能抛出ClassNotFoundException。以下是ObjectInput接口定义的方法:
| 方法 | 描述 |
| — | — |
| int available() | 返回输入缓冲区中当前可用的字节数 |
| void close() | 关闭调用的流,后续的读取尝试将引发IOException |
| int read() | 返回下一个可用输入字节的整数表示,遇到文件末尾返回 -1 |
| int read(byte buffer[]) | 尝试将最多buffer.length字节读入buffer,返回成功读取的字节数,遇到文件末尾返回 -1 |
| int read(byte buffer[], int offset, int numBytes) | 从buffer[offset]开始尝试将最多numBytes字节读入buffer,返回成功读取的字节数,遇到文件末尾返回 -1 |
| Object readObject() | 从调用的流中读取一个对象 |
| long skip(long numBytes) | 忽略(即跳过)调用流中的numBytes字节,返