1.压缩数据,并返回byte[]
/**
* 读取数据,并且用gzip方式压缩数据,返回btye[]数组
*
* @author 常宽
* @param List
* 需要压缩的结合
* @date 2010年7月19日
* @return byte[] 返回的字节数组集合
* @param
*/
public byte[] getBytesByInfcardCdlog(List list) {
byte[] buf = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 构造一个字节输出流
GZIPOutputStream gzip = new GZIPOutputStream(baos);
ObjectOutputStream oos = new ObjectOutputStream(gzip); // 构造一个类输出流
oos.writeObject(list); // 写这个对象
oos.flush();
oos.close();
gzip.flush();
gzip.close();
baos.flush();
baos.close();
buf = baos.toByteArray(); // 从这个地层字节流中把传输的数组给一个新的数组
} catch (Exception ex) {
ex.printStackTrace();
}
return buf;
}
2.解压缩:返回Object对象
ByteArrayInputStream inPutStream = new ByteArrayInputStream(types); // 构造一个字节输出流
GZIPInputStream gzip = new GZIPInputStream(inPutStream);
ObjectInputStream ois = new ObjectInputStream(gzip);
// 转成对象
Object obj = ois.readObject();