java —— 序列化和反序列化实例


步骤: 创建实体类 user.java

public class user implements Serializable{ private static final long serialVersionUID = 1L; private String name; private int age; 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; } @Override public String toString() { return "user [name=" + name + ", age=" + age + "]"; } }

创建序列化工具类 SerializableUtil.java:
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializableUtil { public static void writeObject( Object msg) { try{ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("H:/test.txt")); //文件在实际项目中肯定是动态的,测试先写死 oos.writeObject(msg); oos.flush(); //缓冲流 oos.close(); //关闭流 System.out.println("序列化成功!"); } catch (Exception e) { e.printStackTrace(); } } public static Object readObject() { ObjectInputStream oin = null; Object mts = null; try{ oin = new ObjectInputStream(new FileInputStream("H:/test.txt")); mts =oin.readObject(); oin.close(); System.out.println("反序列化成功!"); } catch (Exception e) { e.printStackTrace(); } return mts; } }


测试方法:
public static void main(String[] args) { user user = new user(); user.setAge(24); user.setName("张三"); SerializableUtil.writeObject(user); user user2 = new user(); user2 = (user) SerializableUtil.readObject(); System.out.println(user2.toString()); }

结果:
序列化成功! 反序列化成功! user [name=张三, age=24]


注意: 序列化工具类不仅可以序列化一个类,也可以是一个集合,工具类是不要变化的,如果实际项目中文件地址要变化也可以用参数的方式传入。

【java —— 序列化和反序列化实例】序列化集合和测试结果:
public static void main(String[] args) { user user = new user(); user.setAge(24); user.setName("张三"); user user2 = new user(); user2.setAge(23); user2.setName("李四"); List lists = new ArrayList<>(); lists.add(user); lists.add(user2); SerializableUtil.writeObject(lists); List lists2 = new ArrayList<>(); lists2 = (List) SerializableUtil.readObject(); for(user value : lists2){ System.out.println(value.toString()); } }

结果:
序列化成功! 反序列化成功! user [name=张三, age=24] user [name=李四, age=23]


    推荐阅读