我有一个要保存到文件中的 String 对象,我不在乎它是保存为纯文本还是二进制文件。我尝试保存为纯文本,大约 27 个字节。然后我试了一下ObjectOutputStream
,它是 24 字节。有没有更好的方法将 String 对象保存到文件中?该字符串是 189:25:600:-324324214& 并打算拥有数千个。这就是我想要压缩它的原因,当然每个字符串都会有所不同
问问题
301 次
2 回答
2
以下是一些用于压缩的选项:
- GZIPOutputStream(“gzip 包装器中的放气”)
- DeflaterOutputStream(“plain deflate”,推荐超过 gzip 或 zip“包装器”)标准
- LZMA Java 实现
- jZlib
- LZO-Java
- Lz4-java 和 LZ4-HC(Lz4 速度快,压缩比合理,LZ4-HC 用于高压缩)
- XZ(包含 LZMA2 压缩算法)
- snappy-java(使用 JNI,由 Google 根据 LZ77 的想法开发)
好吧,到目前为止,我只使用了 1、2、4 和 7 :)。使用 XZ 对我来说似乎是合理的,快速和更高的压缩比并且非常易于使用。
XZOutputStream out = new XZOutputStream(outstream, LZMA2Options);
InputStream in = new XZInputStream(anInputstream);
于 2013-10-06T19:03:40.847 回答
2
将 a 包裹FileOutputStream
在 aDeflatorOutputStream
内ObjectOutputStream
以创建文件。(将整个数组写为单个对象。)然后将 a 包裹FileInputStream
在一个InflatorInputStream
inside anObjectInputStream
中以读取。
于 2013-10-06T19:05:25.773 回答