java zip,gzip压缩解压缩

测试代码:
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();
    }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值