`

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);
	}
}  


 依赖jar包及依赖jar包源码见附件。

 http://commons.apache.org/proper/commons-codec/download_codec.cgi

分享到:
评论

相关推荐

    JAVA压缩与解压文件(包括子目录)

    本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util.zip)**: Java提供了`java.util.zip`包,它包含了处理压缩文件...

    实现java文件压缩与解压

    ### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...

    TTools-master_java压缩与解压_

    请注意,以上描述是基于常规Java压缩库的功能和一个理想化的`TTools-master`类库所作的推测。具体`TTools-master`的实现和特性应参照其官方文档或源代码。在实际使用时,务必查阅相关文档,确保正确理解和使用该类库...

    java压缩与解压RAR文件

    在Java编程环境中,处理RAR文件的压缩和解压任务是一项常见的需求。RAR是一种流行的压缩格式,通常用于存储和传输大量数据。本篇文章将详细介绍如何使用Java实现RAR文件的压缩和解压操作。 首先,Java标准库并没有...

    java压缩与解压实现文档

    在本文档中,我们将深入探讨如何在Java中实现文件和文件夹的压缩与解压缩,以及相关的知识点。 1. **Java Zip API基础** Java的`java.util.zip`包提供了一些核心类,如`ZipInputStream`、`ZipOutputStream`、`Zip...

    Java压缩及解压tar、tar.z格式文件

    Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

    JAVA压缩解压JAVA压缩解压

    JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

    java 压缩/解压 .zip/.rar/.tar 文件

    在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java API来压缩和解压缩`.zip`、`.rar`和`.tar`这三种常见的文件格式。 首先,对于`.zip`文件...

    字符串的压缩与解压 java

    字符串的压缩和解压,java语言编写,zip实现,代码编写

    java压缩解压ZIP

    java压缩解压ZIP

    Java实现的带密码压缩与解压zip文件源码

    在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...

    java压缩解压文件

    java压缩解压文件

    java 解压,压缩linux GZ压缩文件

    GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    Java中压缩与解压--中文文件名乱码解决办法

    ### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...

    LZ78算法实现对任意字符串的压缩与解压

    在Java程序中,你需要编写两个主要类:一个用于压缩,另一个用于解压。这两个类都需要维护字典状态,并按照上述步骤进行操作。同时,为了便于使用,可以设计一个主类来接收用户输入,调用压缩和解压类,并输出结果。...

    java压缩(解压)文件jar包

    Apache的java压缩(解压)文件jar包; jar包的名字有些别扭叫ant.jar

    java解压和压缩tar包

    本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...

Global site tag (gtag.js) - Google Analytics