5、(对象的写入与读取)编写一个Java程序,在当前文件夹下新建一个文件ObjectFile.obj,往该文件中写入两个人的信息,再从该文件中读出信息并显示;
时间: 2024-03-01 07:53:31 浏览: 25
好的,这里是一个示例代码,实现了往文件中写入和读取对象信息:
```java
import java.io.*;
public class ObjectFileDemo {
public static void main(String[] args) {
// 创建两个 Person 对象
Person p1 = new Person("Tom", 20);
Person p2 = new Person("Jerry", 18);
// 创建源对象
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream("ObjectFile.obj"));
// 将两个对象写入文件
oos.writeObject(p1);
oos.writeObject(p2);
System.out.println("数据写入成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (oos != null) {
oos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 创建目标对象
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("ObjectFile.obj"));
// 从文件中读取对象信息并显示
Person p3 = (Person) ois.readObject();
Person p4 = (Person) ois.readObject();
System.out.println("读取到的对象信息为:");
System.out.println(p3);
System.out.println(p4);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (ois != null) {
ois.close();
}
} catch (IOException 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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
运行该程序后,会在当前文件夹下生成一个名为 `ObjectFile.obj` 的文件,并在控制台输出读取到的对象信息。该程序还可以写入和读取其他类的对象信息,只需要将其实现 `Serializable` 接口即可。需要注意的是,被序列化的类必须是可序列化的,即实现了 `Serializable` 接口,否则会抛出 `NotSerializableException` 异常。