• Java序列化与反序列化(Serializable)


    Java序列化与反序列化(Serializable)

    特别注意:

    1.要序列化的类必须实现Serializable借口

    2.在反序列化(读取对象)的时候必须额外捕获EOFException

    3.序列化之后的文件是“乱码”

    package com.frank.io;
    
    import java.io.EOFException;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    /**  
     * author:pengyan   
     * date:Jun 15, 2011   
     * file:ObjectInputOutputStreamTest.java  
     */ 
    
    public class ObjectInputOutputStreamTest {
    	String path="E:\planda.p";
    	public static void main(String[] args) throws Exception {
    		ObjectInputOutputStreamTest test=new ObjectInputOutputStreamTest();
    		test.outputObject();
    		test.inputObject();
    	}
    	private void inputObject() throws Exception {
    		//create inputObjectStream
    		ObjectInputStream ois=new ObjectInputStream(new FileInputStream(path));
    		// temp object to receive the value of this stream read everytime
    		Object obj=null;
    		PandaEntity p=null;
    		try {
    			while((obj=ois.readObject())!=null){
    				p=(PandaEntity)obj;
    				//show the object read by the stream
    				System.out.println(p.toString());
    			}
    		} catch (EOFException e) {
    			//throw EOFException when read end
    			System.err.println("读取完毕");
    		}
    	}
    	private void outputObject() throws Exception{
    		//create two object to output
    		PandaEntity p1=new PandaEntity(1000,"团团",3);
    		PandaEntity p2=new PandaEntity(2000,"圆圆",3);
    		//create the output stream
    		ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(path));
    		//write object
    		oos.writeObject(p1);
    		oos.writeObject(p2);
    		//flush the stream
    		oos.flush();
    		//close the stream
    		oos.close();
    	}
    }
    class PandaEntity implements Serializable{
    	/*the class must implements Serializable interface
    	 * or there will throw java.io.NotSerializableException 
    	 * */
    	private Integer id;
    	private String name;
    	private Integer age;
    	@Override
    	public String toString() {
    		return "id:"+id+"	name:"+name+"	age:"+age;
    	}
    	public PandaEntity() {
    	}
    	public PandaEntity(Integer id, String name, Integer age) {
    		this.id = id;
    		this.name = name;
    		this.age = age;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    }
    
  • 相关阅读:
    hdu5014——构造打表找规律
    HDU5124,线段树加离散化
    hdu 3400-三分套三分
    三分法——凸函数求极值问题
    Zoj 3811并查集
    iOS更新之DFU模式和恢复模式
    获取安卓系统版本
    (转)25个增强iOS应用程序性能的提示和技巧--高级篇
    (转)25个增强iOS应用程序性能的提示和技巧--中级篇
    (转)25个增强iOS应用程序性能的提示和技巧--初级篇
  • 原文地址:https://www.cnblogs.com/pengyan5945/p/5218371.html
Copyright © 2020-2023  润新知