序列化和归档对象

时间:2010-12-14 15:05:52

标签: java

我需要在一个流中执行相同的操作。拜托,请你帮我吗?

public static byte[] archivingAndSerialization(Object object){

  ByteArrayOutputStream serializationByteArray = new ByteArrayOutputStream();
  ByteArrayOutputStream archvingByteArray = new ByteArrayOutputStream();
  try {

     ObjectOutputStream byteStream = new ObjectOutputStream(serializationByteArray);
     byteStream.writeObject(object);
     ZipOutputStream out = new ZipOutputStream(archvingByteArray);
     out.putNextEntry(new ZipEntry("str"));
     out.write(serializationByteArray.toByteArray());
     out.flush();
     out.close();

     } catch (IOException e) {
logger.error("Error while IOException!", e);
     }
  return archvingByteArray.toByteArray();
}

1 个答案:

答案 0 :(得分:1)

尝试

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos= new ObjectOutputStream(new DeflatingOutputStream(baos));
oos.writeObject(object);
oos.close();
return baos.toByteArray();

注意:除非对象的大小中等大小,否则压缩它会使其变大,因为它会添加标题。 ;)

反序列化

ObjectInputStream ois = new ObjectInputStream(
    new InflatorInputStream(new ByteArrayInputStream(bytes)));
return ois.readObject();