当前位置: 首页 > 面试题库 >

如何在Java中压缩字符串?

寇宏义
2023-03-14
问题内容

我使用GZIPOutputStream或ZIPOutputStream压缩了一个字符串(我string.length()小于20),但是压缩后的结果比原始字符串长。

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

因此,有人可以帮我压缩字符串吗?

我的功能是这样的:

String compress(String original) throws Exception {

}

更新:

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));
    }
}

问题答案:

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

压缩只有20个字符长的字符串并不是一件容易的事,而且并非总是可能的。如果有重复,霍夫曼编码或简单的行程编码可能可以压缩,但可能压缩得很少。



 类似资料:
  • 问题内容: 我怀疑这是否是加密,但是找不到更好的短语。 我需要像这样传递一个长查询字符串: 查询字符串不包含任何敏感信息,因此在这种情况下我并不真正担心安全性。只是…好,太长且太丑陋。是否有一个库函数可以让我将查询字符串编码/加密/压缩为类似于md5()的结果(类似于,总是32个字符串),但是可以解码/解密/解压缩? 问题答案: 基本前提是非常困难的。在URL中传输任何值意味着您只能使用ASCII

  • 问题内容: 我在想办法也无法在Java中解压缩String时遇到麻烦。这是我要学习的基本Java类,因此只需要基本命令,没有什么花哨的地方。它能够输入的目标 在命令提示符下,它将打印(就像它压缩参数字符串一样)。 另一个目标是输入 它将打印(就像它将解压缩参数String一样)。减压是我遇到的问题。这是我的代码,非常感谢我得到的任何帮助。 问题答案: Quick Code for you..

  • 问题内容: 我正在使用以下代码来压缩和解压缩字符串数据,但是我面临的问题是,它很容易被压缩而不会出错,但是decompress方法会引发以下错误。 线程“主”中的异常java.io.IOException:不是GZIP格式 仍然不知道如何解决此问题!!! 问题答案: 这是因为 发送您可以从中获得的,并在其中使用它来构建您的。以下是需要在代码中进行的更改。

  • 问题内容: 任何人都可以向我展示在我一直在搜索的Java中压缩和解压缩tar.gzip文件的正确方法,但是我能找到的最多是zip或gzip(单独)。 问题答案: 我最喜欢的是plexus-archiver-请参阅GitHub上的资源。 另一个选项是Apache commons- compress- (请参阅mvnrepository)。 使用plexus-utils,用于取消存档的代码如下所示:

  • 我正在为嵌套在其他一些面板中的面板使用垂直BoxLayout。其他面板的大小会导致目标面板中的对象以不美观的方式展开。如何让面板在没有太多填充的情况下从上到下呈现对象? 下面是类似的代码,尽管它产生了填充整个面板的微调器,而不是相距甚远的普通微调器。

  • 我有一个web应用程序(ruby on rails),它发送一些YAML作为隐藏输入字段的值。 现在我想减小发送到浏览器的文本的大小。什么是传输最少数据的最有效的无损压缩形式?我可以在服务器端承担额外的压缩和解压缩成本。