| 
 
| 为什么对象序列化方法中的readOject方法只能读取最新的那个writeObject呢,意思是假如我用writeObject存储多个对象到指定的路径下,当我调用readObject方法时候却仅仅只能读取最后的一个writeObject存储对象,前面都被覆盖了,这样很不方便啊,有没有什么解决方法呢(举例说是假如我用writeObject分别存储了Student  stu1 、stu2、stu3,但是存储完毕后我调用readObject仅仅只能显示stu3的信息),后来我用list集合的形式,虽然能将这三个对象都显示出来,但是啊又觉得对象序列化是不是又有点多余呢。。。我等于又属于兜圈子了,下面给大家看看我的代码 package TestIO;
 
 import java.io.Serializable;
 
 
 class Student implements Serializable
 {
 private String name;
 private int age;
 private String  pro;
 private float score;
 public Student(String name, int age, String pro, float score) {
 super();
 this.name = name;
 this.age = age;
 this.pro = pro;
 this.score = score;
 }
 public String getName() {
 return name;
 }
 
 public int getAge() {
 return age;
 }
 
 public String getPro() {
 return pro;
 }
 
 public float getScore() {
 return score;
 }
 
 
 }
 
 
 
 package TestIO;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.Scanner;
 
 class RW
 {
 
 public ArrayList<Student> al=new ArrayList<Student>();
 void Rw()
 {
 
 }
 public void writeIO() throws FileNotFoundException, IOException
 {
 System.out.println("请依次输入学生的姓名、年龄、课程、分数:");
 Scanner in=new Scanner(System.in);
 String name=in.next();
 int age=in.nextInt();
 String pro=in.next();
 float score=in.nextFloat();
 
 ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("C:\\Student.txt"));
 Student stu=new Student(name,age,pro,score);
 
 oos.writeObject(stu);
 oos.close();
 System.out.println("存储成功");
 }
 
 public void readIO() throws FileNotFoundException, IOException, ClassNotFoundException
 {
 int i=1;
 ObjectInputStream ois=new ObjectInputStream(new FileInputStream("C:\\Student.txt"));
 Student stu=(Student)ois.readObject();
 al.add(stu);
 ois.close();
 }
 
 public void Out()
 {
 while(!al.isEmpty())
 {
 int i=0;
 Student stu=al.get(0);
 System.out.println("name="+stu.getName()+"\t"+"age="+stu.getAge()+"\t"+"pro="+stu.getPro()+"\t"+"score="+stu.getScore());
 al.remove(i);
 i++;
 }
 
 }
 }
 
 
 package TestIO;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Scanner;
 
 public class Seriz
 {
 public static void main(String[]args) throws FileNotFoundException, IOException, ClassNotFoundException
 {
 RW rw=new RW();
 for(int i=0;i<3;i++)
 {
 rw.writeIO();
 rw.readIO();
 }
 rw.Out();
 }
 
 
 }
 | 
 |