package com.sys.util;
import org.apache.shiro.codec.Base64;
import java.io.*;
/**
* @author qyh
* @Description: 序列化工具类
*/
public class SerializeUtil {
/*
* 序列化
*/
public static byte[] serizlize(Object object) throws Exception {
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) {
e.printStackTrace();
throw new Exception(e);
} finally {
if (baos != null) {
baos.close();
}
if (oos != null) {
oos.close();
}
}
}
/*
* 反序列化
*/
public static Object deserialize(byte[] bytes) throws Exception {
ByteArrayInputStream bais = null;
ObjectInputStream ois = null;
Object obj = null;
try {
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
obj = ois.readObject();
return obj;
} catch (IOException e) {
e.printStackTrace();
throw new IOException("Non-serializable object", e);
} finally {
if (ois != null) {
ois.close();
}
if (bais != null) {
bais.close();
}
}
}
/**
* 序列化
*/
public static String serializeModel(Object object) throws Exception {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
String string64 = new String(Base64.encode(baos.toByteArray()));
return string64;
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
} finally {
if (oos != null) {
oos.close();
}
if (baos != null) {
baos.close();
}
}
}
public static Object unserializeStr(String str) throws Exception {
ByteArrayInputStream bais = null;
ObjectInputStream ois = null;
try {
// 反序列化
byte[] base64Bytes = Base64.decode(str);
bais = new ByteArrayInputStream(base64Bytes);
ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
} finally {
if (ois != null) {
ois.close();
}
if (bais != null) {
bais.close();
}
}
}
}
java 序列化与反序列化
最新推荐文章于 2024-07-15 21:55:17 发布