[关闭]
@liruiyi962464 2017-03-23T09:21:29.000000Z 字数 1319 阅读 420

IO 序列化 ObjectOutputStream & ObjectInputStream

java

序列化 & 反序列化

  • 对对象的持久化存储,就是将自定的对象永久存储
  • 这个过程叫序列化,在读出来,叫反序列化
  • 被序列化的对象必须实现Serializable接口
  • 序列化:以对象为单位,保存到硬盘上 内存----------------->硬盘
  • 反序列化:反之,就是序列化 内存----------------->硬盘

测试类

  1. //序列化:以对象为单位,保存到硬盘上 内存----------------->硬盘
  2. //反序列化:反之,就是序列化 内存----------------->硬盘
  3. Apple a1 = new Apple();
  4. a1.setName("老苹果");
  5. a1.setAge(82);
  6. a1.setColor('y');
  7. //先把数据从内存中写道硬盘
  8. File sourceFile = new File("E:/JavaTaskIO/123.txt");
  9. FileOutputStream fos = new FileOutputStream(sourceFile);
  10. ObjectOutputStream oos = new ObjectOutputStream(fos);
  11. oos.writeObject(a1);
  12. //读入
  13. File targetFile = new File("E:/JavaTaskIO/123.txt");
  14. FileInputStream fis = new FileInputStream(targetFile);
  15. ObjectInputStream ois = new ObjectInputStream(fis);
  16. Apple a2 = (Apple) ois.readObject();
  17. System.out.println(a2.getName());

对象类

  1. public class Apple implements Serializable{
  2. //用来保证类型的唯一性
  3. //如果属性发生变化(名字、类型、个数) 依然可以匹配次类型
  4. //如果没有serialVersionUID 如果放生属性变化 会抛出异常
  5. private static final long serialVersionUID = 4954798015679745874L;
  6. private String name;
  7. private int age;
  8. private char color;
  9. public int a;//运行后新添加的
  10. public Apple() {}
  11. public Apple(String name, int age, char color) {
  12. this.name = name;
  13. this.age = age;
  14. this.color = color;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public int getAge() {
  23. return age;
  24. }
  25. public void setAge(int age) {
  26. this.age = age;
  27. }
  28. public char getColor() {
  29. return color;
  30. }
  31. public void setColor(char color) {
  32. this.color = color;
  33. }
  34. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注