常规的序列化与反序列化
package com.duoduo.day321;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Person implements Serializable{
private static final long serialVersionUID=1L;
private String name;
private int age;
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Name:"+name+";age:"+age+";num:"+num;
}
//写对象的操作
public static void writeObject(Object obj,String filePath) {
try {
FileOutputStream fos=new FileOutputStream(filePath);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.flush();
fos.flush();
oos.close();
fos.close();
System.out.println("序列化成功");
}catch(Exception ex) {
ex.printStackTrace();
}
}
//读操作
public static Object readObject(String filePath) {
try {
FileInputStream fis=new FileInputStream(filePath);
ObjectInputStream ois=new ObjectInputStream(fis);
Object temp=ois.readObject();
fis.close();
ois.close();
if(temp!=null) {
System.out.println("反序列化成功");
return temp;
}
}catch(Exception ex) {
ex.printStackTrace();
}
return null;
}
//序列化 与 反序列化
public static void main(String [] args) {
//Person p=new Person();
//p.setAge(20);
//p.setName("duoduo");
//p.setNum(33);
//System.out.println(p);
Person p=(Person)readObject("D:\\Java\\demo\\day321\\person.obj");
if(p!=null) {
System.out.println(p);
}
//writeObject(p,"D:\\Java\\demo\\day321\\person.obj");
}
}
文件 person.obj已经存在
加transient 修饰,不进行序列化:
public class Person implements Serializable{
private static final long serialVersionUID=1L;
private String name;
private transient int age; //修饰age
private int num;
序列化之后 再读取age由20变成0 ,说明没有序列化。