3

我需要在键值存储中存储一个二进制对象(其中包含多个集合的 java 类)。该值的大小限制为 4K。我创建了基于XStream的序列化器和反序列化器,所以当我完成填充我的类成员时,我可以将它序列化为字符串或文件。在最坏的情况下,序列化的字符串/文件大小约为 30K。我设法获得良好的压缩率,因此压缩后我的文件约为 2K,符合要求。

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

  1. 压缩字符串并序列化压缩对象。
  2. 解压缩先前压缩的对象并从中创建一个常规字符串

我正在寻找不需要将序列化对象中间存储到文件以供以后压缩的单行程序。

感谢你的帮助!

4

1 回答 1

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();
于 2012-06-12T07:45:45.743 回答