package com.yangxiaozuo.util;

import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.util.zip.Deflater;  
import java.util.zip.Inflater;

/**
* ZLib压缩工具
*  
* @author 梁栋
* @version 1.0
* @since 1.0
*/
public abstract class ZLibUtils {

/**
     * 压缩
     *  
     * @param data
     *            待压缩数据
     * @return byte[] 压缩后的数据
     */
    public static byte[] compress(byte[] data) {  
        byte[] output = new byte[0];

Deflater compresser = new Deflater();

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

/**
     * 解压缩
     *  
     * @param data
     *            待压缩的数据
     * @return byte[] 解压缩后的数据
     */
    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;  
    }  
   
   
    public static void main(String[] args){
    String inputStr = "snowolf@zlex.org;dongliang@zlex.org;zlex.dongliang@zl";  
         System.err.println("输入字符串:\t" + inputStr);  
         byte[] input = inputStr.getBytes();  
         System.err.println("输入字节长度:\t" + input.length);  
  
         byte[] data = ZLibUtils.compress(input);  
         System.err.println("压缩后字节长度:\t" + data.length);  
  
         byte[] output = ZLibUtils.decompress(data);  
         System.err.println("解压缩后字节长度:\t" + output.length);  
         String outputStr = new String(output);  
         System.err.println("输出字符串:\t" + outputStr);  
    }
}

转载于:https://www.cnblogs.com/coolattt/archive/2010/01/06/1640614.html

java压缩解压缩类实例[转]相关推荐

  1. java 代码压缩javascript_通过Java压缩JavaScript代码实例分享

    通过移除空行和注释来压缩 javascript 代码 /** * this file is part of the echo web application framework (hereinafte ...

  2. java压缩解压缩_利用Java实现压缩与解压缩(zip、gzip)支持中文路径

    zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...

  3. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...

  4. Java压缩/解压缩二进制文件

    在Java中提供Deflater和Inflater工具类来压缩/解压缩数据. 这两个工具类采用zlib算法,下面给出一个封装好的工具. Java代码 /** * util for compress/d ...

  5. Java 压缩解压缩 第三方组件,推荐一个强大的Java开发工具类库!

    feilong开发更简便的工具库 Reduce development, Release ideas (灵感从重复简单的代码中释放出来) 让你从大量重复的底层代码中脱身,提高工作效率; 让你的代码更简 ...

  6. java压缩解压缩完整例子(仅支持lzh格式)

    把下面文件放入同一目录下,运行使用 Run As Java Application 即可 //文件DirectoryZip.java,  压缩文件例子 import  java.io.File; im ...

  7. php压缩解压缩插件,PHP压缩解压缩类:PclZip

    PclZip是一个强大的压缩与解压缩zip文件的PHP类,PclZip library不仅能够压缩与解压缩Zip格式的文件:还能出压缩档的内容.同时也可以对现有的ZIP包进行添加或删除文件.<? ...

  8. java压缩解压缩rar、zip文件

    来源https://www.open-open.com/lib/view/open1363592512046.html 被zip 折腾的要死,特意记录一下来,以后防翻车 package cn.com. ...

  9. JAVA加密工具类实例

    工具类还是老套路,要让用户可扩展,同时提供一个基础工具即可,本文分享BeginCode的用户密码加密工具类的使用, 如果不为了扩展性,可以写成工具类即可,提供两个静态方法如下 一个方法是直接MD5加密 ...

最新文章

  1. 转:Tkinter教程之Text(2)篇
  2. 安装配置sendmail服务器
  3. 从mongodb中查询数据
  4. 学Java编程选择Java面授教学最有效
  5. 除了工商银行,目前中国还有那些宇宙级别的企业?
  6. python assert的作用
  7. kafka配置文件server.properties
  8. eclipse 输入卡顿_解决eclipse卡顿
  9. [Swift]LeetCode288. 唯一单词缩写 $ Unique Word Abbreviation
  10. 【Redis系列】Redis常用数据类型命令大全,6K字爆肝整理,路过不容错过
  11. Delphi7·ProgressBar控件
  12. 思科、华为等四大厂商网络工程师面试题汇总+解析(第1期)
  13. LeetCode 739. 每日温度(java实现)
  14. 六一儿童节,程序员写给女儿的一封信
  15. AAAI最佳论文Informer 解读
  16. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...
  17. 利用python实现计算不同长度蛋白质RMSD
  18. CF765F Souvenirs(暴力、线段树)
  19. 线性模型出现非正定矩阵的问题解释
  20. 华为的研发基地“欧洲小镇”

热门文章

  1. 2022-2028年中国数字化档案加工行业市场深度分析及发展策略分析报告
  2. 2022-2028年中国汽车橡胶件行业市场调查研究及前瞻分析报告
  3. tornado压力测试
  4. 解决:UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position错误
  5. pytorch学习笔记(九):PyTorch结构介绍
  6. Python第三方包的egg info 是什么东西
  7. OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
  8. NVIDIA FFmpeg 转码技术分析
  9. CVPR2019:无人驾驶3D目标检测论文点评
  10. ZooKeeper简介和概念知识