对象序列化和反序列化

淩亂°似流年 2022-05-28 13:46 475阅读 0赞

1、什么是序列化与反序列化?

  序列化:指把堆内存中的 Java 对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络节点(在网络上传输)。这个过程称为序列化。通俗来说就是将数据结构或对象转换成二进制串的过程

  反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象模型的过程。也就是将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程

  1. 对象序列化必须实现Serializable接口.
  2. 实例:

public class ObjectStreamDemo {

  1. private static final String filePath = "src/Old/test7/test7/ObjectStreamDemo.dat";
  2. public static void main(String\[\] args) \{
  3. Player player1 = new Player("葬爱家族",77);
  4. //使用对象流将序列化对象写入到文件中
  5. try (
  6. FileOutputStream fOutStream = new FileOutputStream(filePath);
  7. ObjectOutputStream objOutputStream = new ObjectOutputStream(fOutStream))\{
  8. objOutputStream. writeObject(player1);
  9. System.out.println("对象写入成功!");
  10. \} catch (FileNotFoundException e) \{
  11. e.printStackTrace();
  12. \} catch (IOException e) \{
  13. e.printStackTrace();
  14. \}
  15. //从文件中读取对象,转换成我们可操作的对象
  16. try(
  17. FileInputStream fInputStream = new FileInputStream(filePath);
  18. ObjectInputStream objInpuStream = new ObjectInputStream(fInputStream);
  19. )\{
  20. Player player2 = (Player)objInpuStream. readObject();
  21. System.out.println("读取出的对象:" + player2);
  22. \} catch (FileNotFoundException e) \{
  23. e.printStackTrace();
  24. \} catch (IOException e) \{
  25. e.printStackTrace();
  26. \} catch (ClassNotFoundException e) \{
  27. e.printStackTrace();
  28. \}

}

}

class Player implements Serializable{ //实现Serializable
/**
* 若不赋值,系统会自动赋值,但会出bug
*/
private static final long serialVersionUID = -8854523782157015419L;
private String name;
private int level;

  1. public Player()\{
  2. \}

public Player(String name,int level){
setName(name);
setLevel(level);
}

@Override
public String toString() {
return name + “\t” + level;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getLevel() {
return level;
}

public void setLevel(int level) {
this.level = level;
}

}

发表评论

表情:
评论列表 (有 0 条评论,475人围观)

还没有评论,来说两句吧...

相关阅读

    相关 对象序列序列

    什么是序列化? 为了把对象的成员属性和成员方法进行持久化的保存,需要把对象转换为字节序列,以便于存储,这个过程就叫序列化。 反之,反序列化就是把字节序列恢复成对象。 1

    相关 对象序列序列

    当程序运行的时候,对象在内存中是存在的,一旦程序结束,那么该对象便从内存中“消失”,如果想实现对象的“持久化存储”,即保存在硬盘中呢?那么就需要通过对象的序列化来实现了;同理,