序列化
/**
*
* 1)Java序列化就是把对象转换成字节序列,而Java反序列化就是把字节序列还原成Java对象。
* 2)采用Java序列化与反序列化技术,一是可以实现数据的持久化,在MVC模式中很是有用;
* 二是可以对象数据的远程通信。
*
*/
public class Xulie {
public static void main(String[] args) {
//创建一个对象输出流它可以包装一个其它类型的目标输出流,如文件输出流:
ObjectOutputStream out=null;
try {
out = new ObjectOutputStream(
new FileOutputStream("D:\\objectfile.obj"));
} catch (Exception e) {
e.printStackTrace();
}
//通过对象输出流的writeObject()方法写对象
try {
//Date类实现了Serializable接口
out.writeObject(new Date());
} catch (IOException e) {
e.printStackTrace();
}
}
}
反序列化
/**
* 类通过实现 java.io.Serializable 接口以启用其序列化功能。
* 未实现此接口的类将无法使其任何状态序列化或反序列化。
* 可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义
* 只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常。
* 其中Externalizable是Serializable的子接口
*/
public class Fanxulie {
public static void main(String[] args) {
//步骤一:创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流:
ObjectInputStream in=null;
try {
in = new ObjectInputStream(
new FileInputStream("D:\\objectfile.obj"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//步骤二:通过对象输出流的readObject()方法读取对象:
try {
Date obj2 = (Date)in.readObject();
System.out.println(obj2);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}