对于Java的序列化与反序列化网上的详解很多,这里就不一一复述了
所谓的Serializable,就是java提供的通用数据保存和读取的接口。至于从什么地方读出来和保存到哪里去都被隐藏在函数参数的背后了。这样子,任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。这样子极大的简化了类的设计。只要设计一个保存一个读取功能就能解决上面说得所有问题。
这是我写的最基本序列化的Demo,过几天我去写个Android的Demo来验证我这个方法的易用度,如果你有什么建议或者更好的想法,请您给我留言或评论我的邮箱是 xiaobo_hello@163.com
public class PersonBean implements Serializable {
private static final long serialVersionUID = 1006948430010584886L;
private String userName = "emtpy";
private int userAge = -1;
private int workYear = -1;
public PersonBean(String _userName, int _userAge, int _workYear) {
setUserName(_userName);
setUserAge(_userAge);
setWorkYear(_workYear);
}
public String resultStr() {
StringBuffer buffer = new StringBuffer();
buffer.append(" userName is :" + getUserName());
buffer.append("\n userAge is :" + getUserAge());
buffer.append("\n workYear is :" + getWorkYear());
return buffer.toString();
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public int getWorkYear() {
return workYear;
}
public void setWorkYear(int workYear) {
this.workYear = workYear;
}
}
public class SerializePerson {
private PersonBean personBean = new PersonBean("Hello", 34, 11);
public static void main(String[] args) {
SerializePerson serializePerson = new SerializePerson();
serializePerson.savePerson();
serializePerson.readPerson();
}
//序列化对象
public void savePerson() {
try {
FileOutputStream fos = new FileOutputStream(
"D:\\javaBean\\person.bean");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(personBean);
oos.flush();
oos.close();
} catch (Exception e) {
// TODO: handle exception
}
}
//反序列化对象
public void readPerson() {
try {
FileInputStream fis = new FileInputStream(
"D:\\javaBean\\person.bean");
ObjectInputStream ois = new ObjectInputStream(fis);
PersonBean myPersonBean = (PersonBean) ois.readObject();
ois.close();
System.out.println(myPersonBean.resultStr());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}