欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java对象序列化和反序列化,java对象序列化

来源: javaer 分享于  点击 30908 次 点评:151

java对象序列化和反序列化,java对象序列化


      如果你需要把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。如果你需要在网络上传送java对象的字节序列。

那么你就需要用到java序列化。

      java序列化的本质:就是把对java对象转换为字节序列的过程。

      java反序列化的本质:把字节序列恢复为java对象的过程。

      接下来用一个例子把一个java对象存成文件然后转换成java对象并且把对象里面的内容答印到控制台上来。

      实体类

     这个类需要实现Serializable接口否则无法序列化!!!

/*
 * 实现可序列化接口
 */
public class Student implements Serializable{
	private static final long serialVersionUID = 1L;
	private String name;                                 //名字
	private int year;                                    //年龄
	private String city;                                 //城市
	private Date birth;                                  //生日
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	
	
	public Date getBirth() {
		return birth;
	}
	public void setBirth(Date birth) {
		this.birth = birth;
	}
	/*
	 * (non-Javadoc)
	 * @see java.lang.Object#toString()
	 * 重写toString,不然序列化之后显示的是内存地址
	 */
	@Override
	public String toString(){
		return this.name+" "+this.year+" "+this.city+" "+this.birth.toString();
	}
}

      对象写入写出工具类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class FileHelper {
	private String fileName;

	public FileHelper() {

	}

	public FileHelper(String fileName) {
		this.fileName = fileName;
	}

	/*
	 * 将person对象保存到文件中 params: p:person类对象
	 */
	public void saveObjToFile(Student p) {
		try {
			// 写对象流的对象
			ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName));
			oos.writeObject(p); // 将Person对象p写入到oos中
			oos.close(); // 关闭文件流
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/*
	 * 从文件中读出对象,并且返回Person对象
	 */
	public Student getObjFromFile() {
		try {
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
					fileName));

			Student person = (Student) ois.readObject(); // 读出对象

			return person; // 返回对象
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return null;
	}
}

      TEST类

public class TEST {
	public static void main(String[] args){
		FileHelper fh=new FileHelper("E:\\student.txt");
		
		Student p=new Student();
		p.setName("小沈阳");
		p.setYear(11);
		p.setCity("沈阳");
		p.setBirth(new Date(80,2,16));
		fh.saveObjToFile(p);                               //存入person对象
		
		Student person=fh.getObjFromFile();                 //取出person对象
		System.out.println(person.toString());
	}
}

      运行结果

     

      存成的文件

      

        打开文件的内容

相关文章

    暂无相关文章
相关栏目:

用户点评