原 java字符串压缩和解压缩
版权声明:本文为博主原创文章,请尊重他人的劳动成果,转载请附上原文出处链接和本声明。
本文链接:https://www.91mszl.com/zhangwuji/article/details/1413
package com.mszl.common.utils;
import com.alibaba.fastjson.JSONObject;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.UUID;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GzipUtils {
/**
* 功能:字符串压缩
* 网址: https://91mszl.com
* @Author: zxb
* @Date: 2022-11-01 17:06:27
*/
public static String compress(String str) throws IOException {
if (null == str || str.length() <= 0) {
return null;
}
// 创建一个byte数组输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用默认缓冲区大小创建新的输出流
GZIPOutputStream gzip = new GZIPOutputStream(out);
// 将str转成byte字节写入此输出流
gzip.write(str.getBytes("UTF-8"));
gzip.close();
// 使用指定的charsetName,通过解码字节将缓冲区内容转换为字符串
return out.toString("ISO-8859-1");
}
/**
* 功能:字符串的解压
* 网址: https://91mszl.com
* @Author: zxb
* @Date: 2022-11-01 17:08:45
*/
public static String unCompress(byte[] b) {
try {
if (null == b || b.length <= 0) {
return null;
}
// 创建一个数组输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 创建一个ByteArrayInputStream,使用buf作为其缓冲区数组
ByteArrayInputStream in;
in = new ByteArrayInputStream(b);
// 使用默认缓冲区大小创建新的输入流
GZIPInputStream gzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n = 0;
while ((n = gzip.read(buffer)) >= 0) { // 将未压缩数据读入字节数组
// 将指定byte数组中从偏移量off开始的len个字节写入此byte数组输出流
out.write(buffer, 0, n);
}
// 使用指定的charsetName,通过解码字节将缓冲区内容转换为字符串
return out.toString("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) throws IOException {
JSONObject json=new JSONObject();
json.put("name", "张三");
for(int i=0; i<1000; i++){
json.put(UUID.randomUUID().toString(), UUID.randomUUID().toString());
}
// 压缩
String str=json.toString();
System.out.println("压缩前: " + str);
String res=compress(str);
System.out.println("压缩后: " +res);
// 解压缩
byte[] bytes = res.getBytes("ISO-8859-1");
String uni=unCompress(bytes);
System.out.println("解压后: " + uni);
}
}
2022-11-01 17:15:07 阅读(473)
名师出品,必属精品 https://www.91mszl.com
博主信息