0

打印 file-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);
        }
    }
}

请帮我将所有对象读入文件。

4

1 回答 1

3

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

于 2013-10-22T15:18:43.897 回答