java serializable demo

来源:互联网 发布:选装修公司 知乎 编辑:程序博客网 时间:2024/06/05 10:45

对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象。对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上或者通过网络将之传送到另一个网络节点。

而一旦其他程序获得这种二进制流,即可将之恢复为Java对象。

package com.serializabledemo;


import java.io.Serializable;
/**
 * 要序列化实体类
 * @author jianhai.zhuo
 *
 */
public class Person implements Serializable{
/**

*/
private static final long serialVersionUID = 1L;
private String name;
private String address;
private int    age;



public Person() {
}
public Person(String name,String address,int age) {
this.name = name;
this.address = address;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "姓名:"+name+"\n地址:"+address+"\n年龄"+age;
}




}

-------------------------------------------------------------------------------------------------------------------------------

package com.serializabledemo;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
 * 
 * @author jianhai.zhuo
 * 测试 序列化和反序列化类
 *
 */
public class TestSerializable {


static List<Person> personArray = new ArrayList<Person>();
static Person person = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=0;i<5;i++){
person = new Person();
person.setAddress("jiangsu province");
person.setName("smartly boy");
person.setAge(23+i);
personArray.add(person);

}
serializableMethod(personArray);

List<Person> de = new ArrayList<Person>();
de = deSerializableMethod();
for(Person person :de){
System.out.println(person.getAge());
System.out.println(person.getName());
System.out.println(person.getAddress());
}



}

/**

* @param personArray2
* 把对象序列化后保存到本地磁盘中
*/
public static void serializableMethod(List<Person> personArray2){
try{
File file = new File("d:"+File.separator+"serializable.txt");
OutputStream out = new FileOutputStream(file);
ObjectOutputStream oos = null;
oos = new ObjectOutputStream(out);
oos.writeObject(personArray2);
oos.flush();
oos.close();
}catch(Exception e){
e.printStackTrace();
}

}
/**
* 从本地磁盘中 反序列化对象
* @return
*/
@SuppressWarnings("unchecked")
public static List<Person> deSerializableMethod(){
List<Person> objectArray = new ArrayList<Person>();
try{
File file = new File("d:"+File.separator+"serializable.txt");
InputStream in = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(in);
objectArray = ((List<Person>) ois.readObject());
ois.close();
}catch(Exception e){
e.printStackTrace();
}
return objectArray;
}


}

-----------------------------------test result is -------------------------------------------------

23
smartly boy
jiangsu province
24
smartly boy
jiangsu province
25
smartly boy
jiangsu province
26
smartly boy
jiangsu province
27
smartly boy
jiangsu province

0 0