Java中序列化的步骤:
1.创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流:
- ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:\\objectfile.obj”));
2.通过对象输出流的writeObject()方法写对象,如:
- Out.writeObject(“hello”);
- Out.writeObject(new Date());
Java中反序列化的步骤:
1.创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流:
- ObjectInputStream in = new ObjectInputStream (new fileIutputStream(“D:\\objectfile.obj”));
2.通过对象输入流的readObject()方法读取对象,如:
- String obj1=(String)in.readObject();
- Date obj2=(Date)in.readObject();
- 为了能正确读取数据,必须保证向对象输出流写对象的顺序与从对象输入流读对象的顺序一致
//序列化对象
import java.io.*;import java.util.*;
public class ObjectSaver{
public static void main(String agrs[]) throws Exception {
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(“D:\\objectFile.obj”));
String obj1=”hello”;
Date obj2=new Date();
Customer obj3=new Customer(“Tom”,20);
//序列化对象
out.writeObject(obj1);
out.writeObject(obj2);
out.writeObject(obj3);
out.writeInt(123);
out.close();
//反序列化对象
ObjectInputStream in=new ObjectInputStream(new FileInputStream(“D:\\objectFile.obj”));
String obj11 = (String)in.readObject();
System.out.println(“obj11:”+obj11);
System.out.println(“obj11==obj1:”+(obj11==obj1));
Date obj22 = (Date)in.readObject();
System.out.println(“obj22:”+obj22);
System.out.println(“obj22==obj2:”+(obj22==obj2));
Customer obj33 = (Customer)in.readObject();
System.out.println(“obj33:”+obj33);
System.out.println(“obj33==obj3:”+(obj33==obj3));
int var= in.readInt();
System.out.println(“var:”+var);
in.close();