java如何将很长的字符串存储为压缩文件?

发布于 2022-09-05 22:00:12 字数 196 浏览 26 评论 0

1.需求是有一个外部接口返回的比较长的字符串,将这个字符串在应用某个目录下存储为压缩文件,也就是将字符串压缩存放。

  1. 提供一个解压缩获取原始串的方法供查询。

问题,现在使用gz压缩后压缩效果不理想,原本500KB的串,压缩后大小是原串的一半,还能再压小些吗?

还需要考虑解压缩的效率,耗时不要太长。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柠檬 2022-09-12 22:00:12

public static byte[] compress(String str) {

if (str == null || str.length() == 0) {
    return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();

GZIPOutputStream gzip;
try {
    gzip = new GZIPOutputStream(out);
    //gzip = new GZIPOutputStream(out){{def.setLevel(Deflater.BEST_COMPRESSION);}}; //效果同上
    gzip.write(str.getBytes("UTF-8"));
    gzip.close();
} catch (IOException e) {
    System.out.println("gzip compress error." + e);
}
return out.toByteArray();

}

自由范儿 2022-09-12 22:00:12

创建GzipOutputStream的时候,set一下compression rate: OutputStream gzipout = new GZIPOutputStream(bos){{def.setLevel(Deflater.BEST_COMPRESSION);}};

即使默认情况下,字符串也可以压缩很多,只压缩一半不正常。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文