Java利用对象序列化控制输入输出
Java中可以利用对象序列化来控制输入输出。对象序列化是指将对象转换成字节流的过程,用于将对象保存在磁盘文件中或通过网络传输。
控制输入输出的方式有两种:
1. 序列化:将对象转换成字节流,可以将字节流写入磁盘文件或通过网络传输。
2. 反序列化:将字节流转换成对象,可以从磁盘文件中读取字节流或通过网络接收字节流。
下面是一个示例代码,展示了如何利用对象序列化来控制输入输出:
import java.io.*;
public class SerializationExample {
public static void main(String[] args) {
// 序列化对象
serializeObject();
// 反序列化对象
deserializeObject();
}
// 序列化对象
public static void serializeObject() {
try {
// 创建一个Person对象
Person person = new Person("John Doe", 30);
// 创建一个文件输出流
FileOutputStream fileOut = new FileOutputStream("person.ser");
// 创建一个对象输出流
ObjectOutputStream out = new ObjectOutputStream(fileOut);
// 将Person对象写入输出流
out.writeObject(person);
// 关闭输出流
out.close();
// 关闭文件输出流
fileOut.close();
System.out.println("Object serialized and saved to person.ser");
} catch (IOException e) {
e.printStackTrace();
}
}
// 反序列化对象
public static void deserializeObject() {
try {
// 创建一个文件输入流
FileInputStream fileIn = new FileInputStream("person.ser");
// 创建一个对象输入流
ObjectInputStream in = new ObjectInputStream(fileIn);
// 从输入流读取Person对象
Person person = (Person) in.readObject();
// 关闭输入流
in.close();
// 关闭文件输入流
fileIn.close();
// 打印读取到的Person对象
System.out.println("Deserialized Object: " + person.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
上述代码中,首先在serializeObject()
方法中创建一个Person
对象,并将其序列化并保存到名为"person.ser"的文件中。然后在deserializeObject()
方法中从该文件中读取字节流,并将其反序列化为Person
对象。最后,打印反序列化得到的Person
对象。
这样,通过利用对象序列化,可以在Java中实现对输入输出的控制。