以前总听说对象的序列化,反序列化,只知道这些概念,并没深入理解其用途,今天在项目中想到用序列化来保存信息。。。
希望和大家能分享一下代码
User.class
import java.io.Serializable;
public class User implements Serializable{
private String fisrtName;
private String lastName;
private String location;
public String getFisrtName() {
return fisrtName;
}
public void setFisrtName(String fisrtName) {
this.fisrtName = fisrtName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "用户名:"+lastName+"."+fisrtName+" 住址:"+location;
}
}
ObjectClass.java
import java.io.Serializable;
import java.util.ArrayList;
public class ObjectClass implements Serializable{
private ArrayList<User> user;
public ArrayList<User> getUser() {
return user;
}
public void setUser(ArrayList<User> user) {
this.user = user;
}
}
Main.java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
//saveObj();
readObj();
}
public static void saveObj()
{
try
{
FileOutputStream fos = new FileOutputStream("D:/class.data",true);
ObjectOutputStream oos = new ObjectOutputStream(fos);
ObjectClass oc = new ObjectClass();
ArrayList<User> list = new ArrayList<User>();
for(int i=100;i<150;i++)
{
User u = new User();
u.setFisrtName("Jack"+i);
u.setLastName("Zhang");
u.setLocation(String.valueOf(Math.random()));
list.add(u);
}
oos.writeObject(list);
oos.flush();
oos.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void readObj()
{
try
{
FileInputStream fis = new FileInputStream("D:/class.data");
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<User> list = (ArrayList<User>)ois.readObject();
for(Iterator<User> it = list.iterator();it.hasNext();)
{
User u = it.next();
System.out.println(u.toString());
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}