在打印文件的第一条记录后发生此错误-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);
}
}
}
请帮我把所有对象都读到文件中。
答案 0 :(得分:3)
Java序列化不支持“追加”。您不能将ObjectOutputStream写入文件,然后在追加模式下再次打开该文件并向其写入另一个ObjectOutputStream。你必须每次重写整个文件。 (即,如果要将对象添加到文件中,则需要读取所有现有对象,然后使用所有旧对象再次写入文件,然后再写入新对象。)