深入理解序列化和反序列化

序列化: 就是将内存中的对象转换为字节序列,方便持久化到磁盘或者网络传输。

对象序列化过程可以分为两步:
第一: 将对象转换为字节数组
第二: 将字节数组存储到磁盘

public static byte[] getByteArray4Object(Object obj)throws Exception{
         
         ByteArrayOutputStream bao=new ByteArrayOutputStream();
         ObjectOutputStream os=new ObjectOutputStream(bao);
         os.writeObject(obj);
         return bao.toByteArray();
         
     }

public static void writeByteArrayToFile(String textFilePath,byte[]bytearr)throws Exception{

        FileOutputStream fos=new FileOutputStream(new File(textFilePath));
        fos.write(bytearr);
    }

反序列化 就是将字节序列转换为内存中的对象

可以是文件中的,也可以是网络传输过来的

// 从文件中反序列化
        FileInputStream fis=new FileInputStream(textFilePath);
       ObjectInputStream ois=new ObjectInputStream(fis);
       User user2= (User) ois.readObject();
      //=========================

     // 字节流中反序列化
         byte[] bytearr=  getByteArray4Object(user);
        
        ByteArrayInputStream bais=new ByteArrayInputStream(bytearr);
        
        ObjectInputStream ois=new ObjectInputStream(bais);
        
        User user2=(User)ois.readObject();

对象的序列化和反序列化主要就是使用ObjectOutputStream 和 ObjectInputStream

你可能感兴趣的:(深入理解序列化和反序列化)