import java.io.Serializable;
import java.io.ObjectOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.FileInputStream;
//序列化类
class Student implements Serializable{
private String name;
private int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class TeseSeriable{
public static void main(String []args) throws Exception{
TeseSeriable test=new TeseSeriable();
//创建一个文件,以追加的方式向文件里写10个对象
for(int i=0;i<10;i++){
Student stu=new Student("jack"+i,19+i);
test.writeToObject(stu,"test.txt");
}
Thread.sleep(1000);
//一次性将10个对象反序列化出来,此方法出错.
test.ListObject("test.txt");
}
//序化列方法
public void writeToObject(Object obj,String fileName){
try{
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(fileName,true));
out.writeObject(obj);
out.flush();
out.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
//反序列化方法
public Object readToObject(String fileName){
Object obj=null;
ObjectInputStream in=null;
try{
in=new ObjectInputStream(new FileInputStream(fileName));
obj=in.readObject();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
try{
in.close();
}
catch(Exception e){}
}
return obj;
}
//列出所有对象
public void ListObject(String fileName){
try{
ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName));
//为什么读取第二个地象就报错呢?********************************************
for(int j=0;j<10;j++){
Student student=(Student)in.readObject();
System.out.println(student.getName());
System.out.println(student.getAge());
}
in.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
============================
我想实现的目地是,将10个对象写入到文件里,然后依次读出.
现在写入到文件没有错,但在读到取时却只读到第一个对象,读第二个对象时就报错:
java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1301)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
at TeseSeriable.ListObject(TeseSeriable.java:76)
at TeseSeriable.main(TeseSeriable.java:38)
有兴趣的朋友,可以看看.