问答详情
源自:6-1 序列化基本操作

如果我再次写入一个student实例呢?

好像原对象被覆盖了?

提问者:bryan4it 2016-02-17 11:41

个回答

  • 梁XX
    2016-02-24 22:38:01
    已采纳

    public class ObjectToByteDemo {
    	
    	  public static void main(String[] args){
    		  try {
    			ObjectOutputStream objectWriter =new ObjectOutputStream(
    			new FileOutputStream("testFolder/objectTestDemo.txt"));
    			StudentDemo st =new StudentDemo("XiaoMing","45398",19);
    			StudentDemo st01 =new StudentDemo("Chen","87659",22);
    			
    			objectWriter.writeObject(st);
    			objectWriter.writeObject(st01);
    			objectWriter.flush();
    			objectWriter.close();
    			
    			ObjectInputStream objectReader = new ObjectInputStream( 
    			new FileInputStream("testFolder/objectTestDemo.txt"));
    			StudentDemo tmpStu =(StudentDemo)objectReader.readObject();
    			System.out.println(tmpStu);
    			//Return the object read from the stream
    			StudentDemo tmpStu01 =(StudentDemo)objectReader.readObject();
    			System.out.println(tmpStu01);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		  
    		  
    	  }
    
    }

    结果:

    StudentDemo [stuName=XiaoMing, stuID=45398, age=19]
    StudentDemo [stuName=Chen, stuID=87659, age=22]

    不会被覆盖,可以理解为像read()方法一样,指针从0开始,偏移一个读一个对象出来。

    不能指定反序列哪一个对象。

  • 怒放的生命012
    2016-07-02 23:13:45

    如果想一次都出来完,就用一个集合,对其收集;然后在序列化

  • 无心水2012
    2016-02-17 16:55:54

    没有被覆盖。应该是一次只能传输一个序列化对象。

        http://img.mukewang.com/56c4353a00017dd206500445.jpg