Java数据交换代码
时间: 2024-09-18 18:02:01 浏览: 37
在Java中,数据交换通常涉及序列化(Serialization)和反序列化(Deserialization)。序列化是将对象的状态转换成字节流的过程,便于在网络或存储设备间传输;而反序列化则是从字节流恢复回原始对象的过程。
以下是一个简单的例子,展示了如何使用Java的内置`ObjectOutputStream`和`ObjectInputStream`类进行序列化和反序列化:
```java
import java.io.*;
// 定义一个需要序列化的对象
class User {
String name;
int age;
// 提供默认构造函数和序列化所需的writeObject方法
public User(String name, int age) {
this.name = name;
this.age = age;
}
private void writeObject(ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
}
}
public class Main {
public static void main(String[] args) {
try {
// 创建用户对象并序列化
User user = new User("Alice", 25);
FileOutputStream fos = new FileOutputStream("user.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(user);
oos.close(); // 关闭输出流
// 反序列化
FileInputStream fis = new FileInputStream("user.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
User deserializedUser = (User)ois.readObject();
System.out.println("Name: " + deserializedUser.name + ", Age: " + deserializedUser.age);
ois.close(); // 关闭输入流
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,当程序运行时,`User`对象会被序列化到名为`user.ser`的文件中。然后,在另一个地方,可以读取这个文件并将内容反序列化回`User`对象。
阅读全文