即时压缩和序列化字符串

时间:2012-06-12 07:24:32

标签: java serialization compression

我需要在键值存储中存储二进制对象(内部有多个集合的java类)。 该值的大小限制为4K。 我创建了基于XStream的序列化程序和反序列化器,所以当我完成填充我的类成员时,我可以将它序列化为String或文件。 在最坏的情况下,序列化的字符串/文件大小约为30K。我能够达到良好的压缩率,所以压缩后我的文件大约是2K,这符合账单。

我的问题:是否有任何有用的java API \ library \技术可以:

  1. 压缩String并序列化压缩对象。
  2. 解压缩先前压缩的对象并从中创建常规字符串
  3. 我正在寻找不需要将序列化对象中间存储到文件以供以后压缩的单行。

    感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

尝试使用GZIPOutputStream来压缩字符串:

ByteArrayOutputStream out = new ByteArrayOutputStream();
Writer writer = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(out)));
writer.write(string);
byte[] zipped = out.toByteArray();

再次解压缩:

ByteArrayInputStream in = new ByteArrayInputStream(zipped);
BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(in)));
string = reader.readLine();