Java中如何压缩字符串?

2023-12-02

I use GZIPOutputStream or ZIPOutputStream压缩字符串(我的string.length()小于20),但压缩后的结果比原始字符串长。

在一些网站上,我发现有朋友说这是因为我原来的字符串太短了,GZIPOutputStream可用于压缩较长的字符串。

那么,有人可以帮我压缩字符串吗?

我的功能是这样的:

String compress(String original) throws Exception {

}

Update:

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import java.util.zip.*;


//ZipUtil 
public class ZipUtil {
    public static String compress(String str) {
        if (str == null || str.length() == 0) {
            return str;
        }

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip = new GZIPOutputStream(out);
        gzip.write(str.getBytes());
        gzip.close();
        return out.toString("ISO-8859-1");
    }

    public static void main(String[] args) throws IOException {
        String string = "admin";
        System.out.println("after compress:");
        System.out.println(ZipUtil.compress(string));
    }
}

结果是:

alt text


压缩算法几乎总是具有某种形式的空间开销,这意味着它们仅在压缩数据足够大以至于开销小于节省的空间量时才有效。

压缩只有 20 个字符长的字符串并不容易,而且并不总是可行。如果有重复,霍夫曼编码或简单的游程编码可能能够压缩,但可能不会压缩很多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中如何压缩字符串? 的相关文章

随机推荐