首先我先解释下什么是序列化?什么是反序列化
Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。
提到序列化,不得不提serializable
这个接口中什么都没有,是空的,但是要想实现序列化,必须实现这个接口,只要是要想对象在网络中进行传输,必须实现这个接口
Serializable是一个标示接口,没有任何方法,表名你的类是可以序列化成字节。或保存或网络传输的
什么都不说了 直接上代码
private static void xulie(Student stu){
File f = new File("/Users/wangwei/abc/456.txt");// 保存两个对象的文件对象
try {
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
System.out.println("没有被序列化时的对象如下:");
oos.writeObject(stu);
System.out.println("序列化成功!!");
oos.flush();
fos.close();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static Student fan(){
Student stu=null;
// /Users/zhaochang/abc/
File f = new File("/Users/wangwei/abc/456.txt");
try {
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
stu = (Student) ois.readObject();
System.out.println(stu);
fis.close();
ois.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return stu;
}
就是一个简单的sutdent 用于保存在那个456.txt文件中,切记,这个student是实现了那个serializable接口的,要不然不能实现序列化的
这段代码就是实现了序列化,保存在/user/wangwei/abc/456/txt中,中间用到了FileOutputstream和ObjectOutputstream,然后调用oos的write把对象放在了那个文件中了
反序列化就是从那个文件中拿到保存的对象信息,返回一个student对象,下面这个是打印结果,同鞋们可试下,验证下