学习-Java输入输出之对象IO流之序列化一个对象
时间: 2024-12-14 17:22:47 浏览: 7
在Java中,对象的输入输出(Object I/O)通常涉及到序列化和反序列化过程。序列化是将对象的状态转换为字节流的过程,而反序列化则是将这些字节流恢复为原始对象的过程。这对于持久化存储、网络通信以及数据交换非常有用。
**序列化步骤**:
1. **导入所需的包**:序列化操作主要通过`java.io.Serializable`接口实现,所以需要import `java.io.ObjectOutputStream`和`java.io.ObjectInputStream`。
```java
import java.io.Serializable;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
```
2. **创建Serializable对象**:首先,你需要创建一个实现了`Serializable`接口的类,例如`Person`类。
```java
public class Person implements Serializable {
private String name;
// getters and setters...
}
```
3. **序列化对象**:当你想保存这个对象时,可以使用`ObjectOutputStream`将对象写入文件。
```java
Person person = new Person("Alice");
try (FileOutputStream fileOut = new FileOutputStream("person.ser")) {
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(person);
out.close(); // 关闭流以释放资源
} catch (IOException e) {
e.printStackTrace();
}
```
4. **反序列化对象**:当你需要从文件中读取对象时,使用`ObjectInputStream`。
```java
try (FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn)) {
Person loadedPerson = (Person) in.readObject(); // 注意这里需要强制类型转换
System.out.println(loadedPerson.getName()); // 输出"Alice"
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
```
阅读全文