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();
}
}
}
压缩字符串:
compressString 方法将输入的字符串转换为字节数组。Deflater 类进行压缩,并将压缩后的数据写入 ByteArrayOutputStream。解压字符串:
decompressString 方法将 Base64 编码的字符串解码为字节数组。Inflater 类进行解压,并将解压后的数据写入 ByteArrayOutputStream。主程序:
main 方法中,我们测试了压缩和解压功能,打印出原始、压缩和解压后的字符串。上一篇:java是静态语言吗
下一篇:java 类
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站