编写Java应用程序,创建一个可序列化类,将该类的对象写入到文件中。用对象输入流读取并显示对象信息。
时间: 2024-03-19 17:44:20 浏览: 42
类和对象的序列化,可以序列化程xml或者byte
好的,我可以为您提供一个简单的 Java 序列化和反序列化的示例程序。
以下是一个可序列化的类 `Person` ,它有 `name` 和 `age` 两个属性:
```java
import java.io.Serializable;
public 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;
}
}
```
现在我们将该类的对象写入文件中:
```java
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializeDemo {
public static void main(String[] args) {
Person person = new Person("Tom", 20);
try {
FileOutputStream fileOut = new FileOutputStream("person.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(person);
out.close();
fileOut.close();
System.out.println("Serialized data is saved in person.ser");
} catch (IOException i) {
i.printStackTrace();
}
}
}
```
该程序会将 `person` 对象序列化为 `person.ser` 文件。
现在我们使用对象输入流读取并显示对象信息:
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class DeserializeDemo {
public static void main(String[] args) {
Person person = null;
try {
FileInputStream fileIn = new FileInputStream("person.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
person = (Person) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
} catch (ClassNotFoundException c) {
System.out.println("Person class not found");
c.printStackTrace();
}
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}
```
该程序会输出 `person` 对象的属性值。需要注意的是,反序列化时必须将读取到的对象转换为正确的类型,否则会抛出 `ClassCastException` 异常。
阅读全文