读取java中的对象错误java.io.StreamCorruptedException:无效的类型代码:AC

时间:2013-10-22 15:02:47

标签: java serialization

在打印文件的第一条记录后发生此错误-java.io.StreamCorruptedException:无效的类型代码:AC 我想使用下面的代码将对象写入文件并将所有对象读入文件

演示代码

import java.io.*;
import java.util.*;
class Student implements Serializable
{
    int no;
    String nm;
    void set(int no,String nm)
    {
        this.no=no;
        this.nm=nm;
    }
    void get()
    {
        System.out.println(no+"--"+nm);
    }
}
class write
{
    public static void main(String[] args)
    {
        try
        {
            int no;
            String s;
            ObjectOutputStream oi=new ObjectOutputStream(new FileOutputStream("d:\\abc1.txt",true));
            Scanner sc=new Scanner(System.in);
            System.out.print("Enter Roll No:");
            no=sc.nextInt();
            System.out.print("Enter Name:");
            sc.nextLine();
            s=sc.nextLine();
            Student s1=new Student();
            s1.set(no,s);
            oi.writeObject(s1);
            oi.close();
            Student sp;
            ObjectInputStream ooi=new ObjectInputStream(new FileInputStream("d:\\abc1.txt"));
            while((sp=(Student)ooi.readObject())!=null)
            {
                sp.get();
            }
            ooi.close();
        }
        catch (Exception ex)
        {
            System.out.println(ex);
        }
    }
}

请帮我把所有对象都读到文件中。

1 个答案:

答案 0 :(得分:3)

Java序列化不支持“追加”。您不能将ObjectOutputStream写入文件,然后在追加模式下再次打开该文件并向其写入另一个ObjectOutputStream。你必须每次重写整个文件。 (即,如果要将对象添加到文件中,则需要读取所有现有对象,然后使用所有旧对象再次写入文件,然后再写入新对象。)