java对象的序列化与反序列化

本文介绍了Java中对象序列化的两种主要用途:将对象持久化到硬盘以实现长期保存,以及在网络上传输对象。通过序列化可以有效管理大量Session对象,并详细展示了序列化与反序列化的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象的序列化主要有两种用途:

1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

2) 在网络上传送对象的字节序列。

在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

public class SerializeUtil {

/** 
* 方法名:          serialize
* 方法功能描述:     序列化
* @param:         是包含汉字的字符串
* @return:        其他非简体汉字返回 '0';
* @Author:        blank
* @Create Date:   2017年5月12日 上午11:08:27
*/
public static byte[] serialize(Object object) {  
ObjectOutputStream oos = null;  
ByteArrayOutputStream baos = null; 

try {  
baos = new ByteArrayOutputStream();  
oos = new ObjectOutputStream(baos);  
oos.writeObject(object);  
byte[] bytes = baos.toByteArray();  
return bytes;  

catch (Exception e) {  
}  

return null;  
}  
 
/** 
* 方法名:          unserialize
* 方法功能描述:     反序列化
* @param:         是包含汉字的字符串
* @return:        其他非简体汉字返回 '0';
* @Author:        blank
* @Create Date:   2017年5月12日 上午11:08:42
*/
public static Object unserialize(byte[] bytes) {  
ByteArrayInputStream bais = null; 

try {  
bais = new ByteArrayInputStream(bytes);  
ObjectInputStream ois = new ObjectInputStream(bais);  
return ois.readObject();  

catch (Exception e) {  


return null;  
}  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值