package com.java110.utils.util;
|
|
/**
|
* Created by wuxw on 2017/7/23.
|
*/
|
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayOutputStream;
|
import java.io.Closeable;
|
import java.io.ObjectInputStream;
|
import java.io.ObjectOutputStream;
|
import java.util.ArrayList;
|
import java.util.List;
|
/**
|
* 序列化工具类
|
* @author caspar
|
*
|
*/
|
public class SerializeUtil {
|
|
/**
|
* 序列化
|
* @param object
|
* @return
|
*/
|
public static byte[] serialize(Object object) {
|
if (object == null) {
|
return null;
|
}
|
ObjectOutputStream oos = null;
|
ByteArrayOutputStream baos = null;
|
byte[] bytes = null;
|
try {
|
// 序列化
|
baos = new ByteArrayOutputStream();
|
oos = new ObjectOutputStream(baos);
|
oos.writeObject(object);
|
bytes = baos.toByteArray();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
close(oos);
|
close(baos);
|
}
|
return bytes;
|
}
|
|
/**
|
* 反序列化
|
*
|
* @param bytes
|
* @return
|
*/
|
public static Object unserialize(byte[] bytes) {
|
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 e) {
|
e.printStackTrace();
|
} finally {
|
close(bais);
|
close(ois);
|
}
|
return null;
|
}
|
|
/**
|
* 序列化 list 集合
|
*
|
* @param list
|
* @return
|
*/
|
public static byte[] serializeList(List<?> list) {
|
|
if (list == null || list.size() == 0) {
|
return null;
|
}
|
ObjectOutputStream oos = null;
|
ByteArrayOutputStream baos = null;
|
byte[] bytes = null;
|
try {
|
baos = new ByteArrayOutputStream();
|
oos = new ObjectOutputStream(baos);
|
for (Object obj : list) {
|
oos.writeObject(obj);
|
}
|
bytes = baos.toByteArray();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
close(oos);
|
close(baos);
|
}
|
return bytes;
|
}
|
|
/**
|
* 反序列化 list 集合
|
*
|
* @param
|
* @return
|
*/
|
public static <T> List<T> unserializeList(byte[] bytes,Class<T> t) {
|
if (bytes == null) {
|
return null;
|
}
|
|
List<T> list = new ArrayList<T>();
|
ByteArrayInputStream bais = null;
|
ObjectInputStream ois = null;
|
try {
|
// 反序列化
|
bais = new ByteArrayInputStream(bytes);
|
ois = new ObjectInputStream(bais);
|
while (bais.available() > 0) {
|
T obj = (T) ois.readObject();
|
if (obj == null) {
|
break;
|
}
|
list.add(obj);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
close(bais);
|
close(ois);
|
}
|
return list;
|
}
|
|
/**
|
* 关闭io流对象
|
*
|
* @param closeable
|
*/
|
public static void close(Closeable closeable) {
|
if (closeable != null) {
|
try {
|
closeable.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
}
|