package com.test.io;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class IOTest {
/**
* 对对象进行序列化处理
* @param obj
* @return
* @throws IOException
*/
public static byte[] serializable(Object obj) throws IOException{
if(obj == null){
return null;
}
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try{
//序列化
baos = new ByteArrayOutputStream();
// 创建写入指定OutputStream的ObjectOutputStream
//此构造方法将序列化流部分写入底层流;调用者可以通过刷新流来接收,并且用于接收的ObjectInputStream构造方法不会阻塞
oos = new ObjectOutputStream(baos);
//将对象写入流中,以及对 对象的类的签名,便于readObject识别
oos.writeObject(obj);
//将字符流转换成字符数组
byte[] bytes = baos.toByteArray();
return bytes;
}catch(Exception ee){
}finally{
baos.close();
oos.close();
}
return null;
}
/**
* 反序列化
* @param bytes
* @return
* @throws IOException
*/
public static Object unserialize(byte[] bytes) throws IOException{
if(bytes == null){
return null;
}
ByteArrayInputStream bais = null;
ObjectInputStream ois = null;
try{
//反序列化,字符流
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
return ois.readObject();
}catch(Exception ee){
}finally{
bais.close();
ois.close();
}
return null;
}
}
对象序列化与反序列化
最新推荐文章于 2023-07-10 08:34:59 发布