java zip,gzip压缩解压缩

本文提供了一个使用Java实现GZip压缩和解压缩的示例代码,展示了如何将字符串压缩为字节数组,并随后进行解压缩,恢复原始数据。

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

测试代码:
String temp = "test kilonet for all";

  System.out.println("************oraginal:\r\n" + temp);

  byte[] tempb = null;
  try {
   tempb = temp.getBytes("utf-8");
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
  }
  System.out.println("************init size:" + tempb.length);
  
  
  byte[] ziptemp;
  ziptemp = ZipUtil.gZip(tempb);
  System.out.println("************ziped size:" + ziptemp.length);

  byte[] unziptemp = ZipUtil.unGZip(ziptemp);
  System.out.println("************unziped size:" + unziptemp.length);
  
  System.out.println("************unzip & ziped:\r\n" + new String(unziptemp));

 

 

ExpandedBlockStart.gif代码
package com.test;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipUtil {

    
/***
     * 压缩GZip
     * 
     * 
@param data
     * 
@return
     
*/
    
public static byte[] gZip(byte[] data) {
        
byte[] b = null;
        
try {
            ByteArrayOutputStream bos 
= new ByteArrayOutputStream();
            GZIPOutputStream gzip 
= new GZIPOutputStream(bos);
            gzip.write(data);
            gzip.finish();
            gzip.close();
            b 
= bos.toByteArray();
            bos.close();
        } 
catch (Exception ex) {
            ex.printStackTrace();
        }
        
return b;
    }

    
/***
     * 解压GZip
     * 
     * 
@param data
     * 
@return
     
*/
    
public static byte[] unGZip(byte[] data) {
        
byte[] b = null;
        
try {
            ByteArrayInputStream bis 
= new ByteArrayInputStream(data);
            GZIPInputStream gzip 
= new GZIPInputStream(bis);
            
byte[] buf = new byte[1024];
            
int num = -1;
            ByteArrayOutputStream baos 
= new ByteArrayOutputStream();
            
while ((num = gzip.read(buf, 0, buf.length)) != -1) {
                baos.write(buf, 
0, num);
            }
            b 
= baos.toByteArray();
            baos.flush();
            baos.close();
            gzip.close();
            bis.close();
        } 
catch (Exception ex) {
            ex.printStackTrace();
        }
        
return b;
    }

    
/***
     * 压缩Zip
     * 
     * 
@param data
     * 
@return
     
*/
    
public static byte[] zip(byte[] data) {
        
byte[] b = null;
        
try {
            ByteArrayOutputStream bos 
= new ByteArrayOutputStream();
            ZipOutputStream zip 
= new ZipOutputStream(bos);
            ZipEntry entry 
= new ZipEntry("zip");
            entry.setSize(data.length);
            zip.putNextEntry(entry);
            zip.write(data);
            zip.closeEntry();
            zip.close();
            b 
= bos.toByteArray();
            bos.close();
        } 
catch (Exception ex) {
            ex.printStackTrace();
        }
        
return b;
    }

    
/***
     * 解压Zip
     * 
     * 
@param data
     * 
@return
     
*/
    
public static byte[] unZip(byte[] data) {
        
byte[] b = null;
        
try {
            ByteArrayInputStream bis 
= new ByteArrayInputStream(data);
            ZipInputStream zip 
= new ZipInputStream(bis);
            
while (zip.getNextEntry() != null) {
                
byte[] buf = new byte[1024];
                
int num = -1;
                ByteArrayOutputStream baos 
= new ByteArrayOutputStream();
                
while ((num = zip.read(buf, 0, buf.length)) != -1) {
                    baos.write(buf, 
0, num);
                }
                b 
= baos.toByteArray();
                baos.flush();
                baos.close();
            }
            zip.close();
            bis.close();
        } 
catch (Exception ex) {
            ex.printStackTrace();
        }
        
return b;
    }

    
/**
     * 把字节数组转换成16进制字符串
     * 
     * 
@param bArray
     * 
@return
     
*/
    
public static String bytesToHexString(byte[] bArray) {
        StringBuffer sb 
= new StringBuffer(bArray.length);
        String sTemp;
        
for (int i = 0; i < bArray.length; i++) {
            sTemp 
= Integer.toHexString(0xFF & bArray[i]);
            
if (sTemp.length() < 2)
                sb.append(
0);
            sb.append(sTemp.toUpperCase());
        }
        
return sb.toString();
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值