中易网

关于java序列化多个不同类型对象的存取与读取?万分感谢

答案:3  悬赏:80  
解决时间 2021-02-18 17:56
public class SerializableTestListError { static List listStudentObject=new ArrayList();
static List listCarObject=new ArrayList();
static List listObject=new ArrayList();
public static void main(String[] args) throws IOException {
Student stu1=new Student(001, "yteng1", 20);
Student stu2=new Student(002,"yteng2",21);
Car car1=new Car("DazsAuto", "ShangHai", 200000.0);
Car car2=new Car("Ford","JiangSu",30000.00);
SerializableTestListError serializableTestInstance= new SerializableTestListError();
listObject.add(car2);
listObject.add(stu1);
writeObject2File(listObject,"D:\\date1.txt");
try {
readObjectFromFile("D:\\date1.txt");
} catch (SerilizableException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
for(Iterator iterCar=listCarObject.iterator();iterCar.hasNext();){
System.out.println(iterCar.next());
}
for(Iterator iterStudent=listStudentObject.iterator();iterStudent.hasNext();){
System.out.println(iterStudent.next()) }}
public static void writeObject2File(Listo,String fileName) throws IOException{
FileOutputStream fout=new FileOutputStream(fileName,true);
ObjectOutputStream sout=new ObjectOutputStream(fout);
for(int i=0;i sout.writeObject(o.get(i));
}
System.out.println("写入对象成功!");
}
public static void readObjectFromFile(String fileName) throws Exception{
FileInputStream fin=new FileInputStream(fileName);;
BufferedInputStream bis=new BufferedInputStream(fin);
ObjectInputStream oip=null;
while(true){
try{
oip=new ObjectInputStream(bis); //每次重新构造对象输入流
}catch(EOFException e)
{
System.out.println("已达文件末尾");//如果到达文件末尾,则退出循环
break;
}
Object object=new Object();
object=oip.readObject();
if(object instanceof Student) { //判断对象类型
listStudentObject.add((Student)object);
}
else if(object instanceof Car){
listCarObject.add((Car)object); } }
}}错误如下: 跪求啊
java.io.StreamCorruptedException: invalid stream header: 7371007E
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.(ObjectInputStream.java:280)
at travelsky.eb.yteng.test.SerializableTestListError.readObjectFromFile(SerializableTestListError.java:78)
at travelsky.eb.yteng.test.SerializableTestListError.main(SerializableTestListError.java:43)
Student [id=1, name=yteng1, age=20]
最佳答案
  • 二级知识专家网友:一只傻青衣
  • 2021-02-17 18:12
readStreamHeader();
加入这个,重新读取文件头就好了
全部回答
  • 1楼网友:何必打扰
  • 2021-02-17 19:59
我怎么觉得 问题不是那样,,, 我举一个例子啊, 比如 我有5个数字对象num, 坐等高手 围观下
  • 2楼网友:我的任性你不懂
  • 2021-02-17 19:34
jgjhgkjhlkhlkh
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯