Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java字符串压缩

作者:原来是梦   发布日期:2025-07-24   浏览:42

import java.util.zip.Deflater;
import java.util.zip.Inflater;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class StringCompressor {

    // 压缩字符串的方法
    public static String compress(String str) {
        if (str == null || str.length() == 0) {
            return str;
        }
        try {
            // 使用Deflater进行压缩
            Deflater deflater = new Deflater();
            deflater.setInput(str.getBytes("UTF-8"));
            deflater.finish();

            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            while (!deflater.finished()) {
                int count = deflater.deflate(buffer);
                byteArrayOutputStream.write(buffer, 0, count);
            }
            byteArrayOutputStream.close();
            byte[] output = byteArrayOutputStream.toByteArray();

            // 将压缩后的字节数组转换为Base64编码的字符串
            return java.util.Base64.getEncoder().encodeToString(output);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    // 解压字符串的方法
    public static String decompress(String compressedStr) {
        if (compressedStr == null || compressedStr.length() == 0) {
            return compressedStr;
        }
        try {
            // 将Base64编码的字符串解码为字节数组
            byte[] inputBytes = java.util.Base64.getDecoder().decode(compressedStr);

            // 使用Inflater进行解压
            Inflater inflater = new Inflater();
            inflater.setInput(inputBytes);

            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            while (!inflater.finished()) {
                int count = inflater.inflate(buffer);
                byteArrayOutputStream.write(buffer, 0, count);
            }
            byteArrayOutputStream.close();
            inflater.end();

            // 将解压后的字节数组转换为字符串
            return byteArrayOutputStream.toString("UTF-8");
        } catch (IOException | java.util.zip.DataFormatException e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        String originalString = "这是一个需要被压缩的字符串示例";
        System.out.println("原始字符串: " + originalString);

        // 压缩字符串
        String compressedString = compress(originalString);
        System.out.println("压缩后的字符串: " + compressedString);

        // 解压字符串
        String decompressedString = decompress(compressedString);
        System.out.println("解压后的字符串: " + decompressedString);
    }
}

解释说明:

  1. 压缩字符串

    • 使用 Deflater 类对输入的字符串进行压缩。
    • 将字符串转换为字节数组,并使用 Deflater 进行压缩。
    • 压缩后的字节数组通过 Base64 编码转换为字符串,以便于传输和存储。
  2. 解压字符串

    • 使用 Inflater 类对压缩后的字符串进行解压。
    • 首先将 Base64 编码的字符串解码为字节数组,然后使用 Inflater 进行解压。
    • 最后将解压后的字节数组转换回原始字符串。
  3. 主函数

    • 提供了一个简单的测试用例,演示了如何压缩和解压字符串。

上一篇:java执行python脚本

下一篇:java调用webservice接口 三种方法

大家都在看

java连接数据库的代码

ubuntu 卸载java

java读取excel中的图片

java新建

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java实体类转json字符串

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站