Java 序列化和反序列化
原文: http://blog.163.com/lyq_163_2009/blog/static/13408269620116243439106/
1. 创建对象时,只要需要,它就会一直存在,但是在程序终止时,无论如何它东欧不会继续存在。
2. Java的对象序列化,实现了java.io.Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列化完全恢复为原来的对象。
3. 只要对象实现了java.io.Serializable接口(该接口仅是一个标记接口,不包括任何方法),对象的序列化处理就会非常简单。
4. 总结,序列化就将Java对象持久化;反序列化就是将持久化的内容转换为Java对象。
package test; import java.io.Serializable; public class Bean implements Serializable{ private static final long serialVersionUID = -3437520744254599749L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } package test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class Test { /** * 序列化 * * @param file * @param bean * @throws IOException */ public static void save(File file,Bean bean)throws IOException{ FileOutputStream fis = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fis); oos.writeObject(bean); oos.flush(); oos.close(); fis.close(); } /** * 反序列化 * * @param file * @return * @throws IOException */ public static Object read(File file)throws IOException{ FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis); Object obj = null; try { obj = ois.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); } ois.close(); fis.close(); return obj; } /** * @param args */ public static void main(String[] args){ try{ Bean bean1 = new Bean(); bean1.setName("name"); Test.save(new File("c://001.txt"), bean1); Bean bean2 = (Bean)Test.read(new File("c://001.txt")); System.out.println(bean2.getName()); }catch(Exception e){ e.printStackTrace(); } } }
浙公网安备 33010602011771号