用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java压缩与解压

2018-03-11 作者: 低调的小飞举报

[java]代码库

package com.dc.util; 
   
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.util.zip.Deflater; 
import java.util.zip.Inflater; 
   
import org.apache.commons.codec.binary.Base64; 
   
/* ******************  类说明  *********************
 * class       :  ZLibUtils
 * @author     :  ncc
 * create time :  2017-12-20 下午03:15:56
 * @version    :  1.0  
 * description :  
 * @see        :                        
 * ************************************************/    
public abstract class ZLibUtils {  
       
    /* ********************************************
     * method name   : compress 
     * description   : 压缩方法
     * @return       : byte[] 压缩后的数据
     * @param        : @param data 待压缩数据 
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static byte[] compress(byte[] data) {   
        byte[] output = new byte[0];   
     
        Deflater compresser = new Deflater(Deflater.BEST_COMPRESSION);   
     
        compresser.reset();   
        compresser.setInput(data);   
        compresser.finish();   
        ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length);   
        try {   
            byte[] buf = new byte[1024];   
            while (!compresser.finished()) {   
                int i = compresser.deflate(buf);   
                bos.write(buf, 0, i);   
            }   
            output = bos.toByteArray();   
        } catch (Exception e) {   
            output = data;   
            e.printStackTrace();   
        } finally {   
            try {   
                bos.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
        compresser.end();   
        return output;   
    
       
    /* ********************************************
     * method name   : compressData 
     * description   : 字符串先压缩,后Base64编码
     * @return       : String
     * @param        : @param data
     * @param        : @return
     * @param        : @throws Exception
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static String compressData(String data) throws Exception{ 
        return new String(getenBASE64inCodec(ZLibUtils.compress(data.getBytes()))); 
    
     
    /* ********************************************
     * method name   : decompress 
     * description   : 解压缩 
     * @return       : byte[] 解压缩后的数据 
     * @param        : @param data 待解压的数据
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static byte[] decompress(byte[] data) {   
        byte[] output = new byte[0];   
     
        Inflater decompresser = new Inflater();   
        decompresser.reset();   
        decompresser.setInput(data);   
     
        ByteArrayOutputStream o = new ByteArrayOutputStream(data.length);   
        try {   
            byte[] buf = new byte[1024];   
            while (!decompresser.finished()) {   
                int i = decompresser.inflate(buf);   
                o.write(buf, 0, i);   
            }   
            output = o.toByteArray();   
        } catch (Exception e) {   
            output = data;   
            e.printStackTrace();   
        } finally {   
            try {   
                o.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
     
        decompresser.end();   
        return output;   
    }   
       
    /* ********************************************
     * method name   : decompressData 
     * description   : 解压缩字符串,先进行Base64解码,在解压
     * @return       : String
     * @param        : @param encdata
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static String decompressData(String encdata) { 
        return new String(ZLibUtils.decompress(getdeBASE64inCodec(encdata))); 
    
       
    /* ********************************************
     * method name   : getenBASE64inCodec 
     * description   : 对数组进行Base64 encode
     * @return       : String
     * @param        : @param b
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static String getenBASE64inCodec(byte[] b) { 
        if (b == null
            return null
        return new String((new Base64()).encode(b)); 
    
   
    /* ********************************************
     * method name   : getdeBASE64inCodec 
     * description   : 对字符串进行Base64 decode
     * @return       : byte[]
     * @param        : @param s
     * @param        : @return
     * modified      : ncc ,  2017-12-20
     * @see          : 
     * ********************************************/       
    public static byte[] getdeBASE64inCodec(String s) { 
        if (s == null
            return null
        return new Base64().decode(s.getBytes()); 
    
       
    public static void main(String[] args) throws Exception{ 
           
        StringBuilder batchContent = new StringBuilder(); 
        batchContent.append("start,").append("100").append("|"); 
        for(int i = 1; i <= 100; i ++) { 
            batchContent.append("123456#").append("0000#").append("10").append("#").append("110101198001010038").append("#").append("622105010755901123").append("#"); 
            if (i < 100) { 
                batchContent.append(","); 
            } else
                batchContent.append("|end"); 
            
        
           
        System.out.println("压缩前的长度:" + batchContent.length() + ",压缩前为:" + batchContent); 
        String compressStr = ZLibUtils.compressData(batchContent.toString()); 
        System.out.println("压缩后的长度:" + compressStr.length() + ",压缩前为:" + compressStr); 
        String decompressStr = ZLibUtils.decompressData(compressStr.toString()); 
        System.out.println("解压后的长度:" + decompressStr.length() + ",解压后为:" + decompressStr); 
    
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...