GZipStream的简单使用

本文介绍了一个简单的Java程序,用于实现字符串的GZIP压缩和解压功能。通过使用Java标准库中的GZIPInputStream和GZIPOutputStream类,该程序能够有效地减少字符串占用的空间,并能在需要时恢复原始内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class MessageGZip {
 
 public static void main(String[] args) {
  //压缩测试
  String str = "GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!";
  System.out.println("压缩前的字符串转换为字节数组的长度:"+str.getBytes().length);
  byte[] b = new byte[1024];
  b = MessageGZip.compressToByte(str, "utf-8");
  System.out.println("压缩后的字符串转换为字节数组的长度:"+b.length); 
  //解压测试
  String str2 = MessageGZip.uncompressToString(b, "utf-8");
  //解压缩出的字符串
  System.out.println(str2);
  
//  返回的测试结果
//  压缩前的字符串转换为字节数组的长度:120
//  压缩后的字符串转换为字节数组的长度:51
//  GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!GZIP压缩解压类测试!
 }

 private static String encode = "utf-8";// "ISO-8859-1"

 public String getEncode() {
  return encode;
 }

 /*
  * 设置 编码,默认编码:UTF-8
  */
 public void setEncode(String encode) {
  MessageGZip.encode = encode;
 }

 /*
  * 字符串压缩为字节数组
  */
 public static byte[] compressToByte(String str, String encoding) {
  if (str == null || str.length() == 0) {
   return null;
  }
  ByteArrayOutputStream out = new ByteArrayOutputStream();
  GZIPOutputStream gzip;
  try {
   gzip = new GZIPOutputStream(out);
   gzip.write(str.getBytes(encoding));
   gzip.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return out.toByteArray();
 }

 /*
  * 字节数组解压缩后返回字符串
  */
 public static String uncompressToString(byte[] b, String encoding) {
  if (b == null || b.length == 0) {
   return null;
  }
  ByteArrayOutputStream out = new ByteArrayOutputStream();
  ByteArrayInputStream in = new ByteArrayInputStream(b);
  try {
   GZIPInputStream gunzip = new GZIPInputStream(in);
   byte[] buffer = new byte[256];
   int n;
   while ((n = gunzip.read(buffer)) >= 0) {
    out.write(buffer, 0, n);
   }
   return out.toString(encoding);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return null;
 }
}

转载于:https://www.cnblogs.com/wlfhotte/archive/2011/12/28/2305189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值