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

java 字符串压缩

作者:残缺的不完美   发布日期:2026-06-23   浏览:125

import java.util.zip.Deflater;
import java.util.zip.Inflater;
import java.nio.charset.StandardCharsets;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class StringCompressor {

    // 压缩字符串的方法
    public static String compressString(String input) throws IOException {
        if (input == null || input.isEmpty()) {
            return input;
        }

        // 将字符串转换为字节数组
        byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8);

        // 创建Deflater对象,用于压缩数据
        Deflater deflater = new Deflater();
        deflater.setInput(inputBytes);
        deflater.finish();

        // 使用ByteArrayOutputStream来捕获压缩后的数据
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(inputBytes.length);
        byte[] buffer = new byte[1024];
        while (!deflater.finished()) {
            int count = deflater.deflate(buffer); // 返回压缩数据并存储到缓冲区中
            outputStream.write(buffer, 0, count);
        }
        outputStream.close();
        byte[] outputBytes = outputStream.toByteArray();

        // 将压缩后的字节数组转换为Base64编码的字符串
        return java.util.Base64.getEncoder().encodeToString(outputBytes);
    }

    // 解压字符串的方法
    public static String decompressString(String compressed) throws IOException {
        if (compressed == null || compressed.isEmpty()) {
            return compressed;
        }

        // 将Base64编码的字符串解码为字节数组
        byte[] compressedBytes = java.util.Base64.getDecoder().decode(compressed);

        // 创建Inflater对象,用于解压数据
        Inflater inflater = new Inflater();
        inflater.setInput(compressedBytes);

        // 使用ByteArrayOutputStream来捕获解压后的数据
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(compressedBytes.length);
        byte[] buffer = new byte[1024];
        while (!inflater.finished()) {
            int count = inflater.inflate(buffer); // 返回解压数据并存储到缓冲区中
            outputStream.write(buffer, 0, count);
        }
        outputStream.close();
        byte[] outputBytes = outputStream.toByteArray();

        // 将解压后的字节数组转换为字符串
        return new String(outputBytes, StandardCharsets.UTF_8);
    }

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

            String compressed = compressString(original);
            System.out.println("Compressed: " + compressed);

            String decompressed = decompressString(compressed);
            System.out.println("Decompressed: " + decompressed);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

解释说明

  1. 压缩字符串

    • compressString 方法将输入的字符串转换为字节数组。
    • 使用 Deflater 类进行压缩,并将压缩后的数据写入 ByteArrayOutputStream
    • 最后,使用 Base64 编码将压缩后的字节数组转换为字符串。
  2. 解压字符串

    • decompressString 方法将 Base64 编码的字符串解码为字节数组。
    • 使用 Inflater 类进行解压,并将解压后的数据写入 ByteArrayOutputStream
    • 最后,将解压后的字节数组转换为原始字符串。
  3. 主程序

    • main 方法中,我们测试了压缩和解压功能,打印出原始、压缩和解压后的字符串。

上一篇:java是静态语言吗

下一篇:java 类

大家都在看

java url decode

java判断是windows还是linux

java原始数据类型

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java常用的设计模式有哪些

java list 查找

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

Laravel 中文站