第1关:学习-Java输入输出之对象IO流之序列化一个对象
时间: 2024-12-11 07:43:36 浏览: 36
第1关:在Java中,对象I/O流主要用于处理对象之间的数据传输,特别是当需要持久化存储对象或者在网络通信中交换对象信息时。序列化是一个关键的概念,它将对象的状态转换成字节流,便于存储和网络传输,而反序列化则是将字节流恢复成原始的对象。
Java提供了一个标准库`java.io`下的`ObjectOutputStream`和`ObjectInputStream`用于序列化和反序列化操作。以下是基本步骤:
1. **序列化**:
- 创建一个对象实例。
- 获取`ObjectOutputStream`对象,通常通过`FileOutputStream`、`SocketOutputStream`等构造。
- 使用`writeUnshared()`或`writeObject()`方法将对象写入流,前者只保存对象自身的引用,后者会包含整个对象的完整状态。
- 关闭流。
```java
Object obj = new YourClass();
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file.ser"))) {
oos.writeObject(obj);
} catch (IOException e) {
e.printStackTrace();
}
```
2. **反序列化**:
- 创建一个`ObjectInputStream`,同样可以基于文件或网络连接。
- 使用`readObject()`从流中读取并创建一个新的对象。
```java
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file.ser"))) {
YourClass restoredObj = (YourClass) ois.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
```
阅读全文