java.util.zip.Deflater 压缩 inflater解压 实例

原文:java压缩解压缩类实例[转]

 

package com.example.helloworld;

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 Utils {

    /**
     * 压缩
     *
     * @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 = Utils.compress(input);
        System.err.println("压缩后字节长度:\t" + data.length);

        byte[] output = Utils.decompress(data);
        System.err.println("解压缩后字节长度:\t" + output.length);
        String outputStr = new String(output);
        System.err.println("输出字符串:\t" + outputStr);
    }
}

 

时间: 2015-07-15

java.util.zip.Deflater 压缩 inflater解压 实例的相关文章

asp.net c# ZIP文件压缩与解压

asp教程.net c# zip文件压缩与解压 using system; using system.collections.generic; using system.text; using system.io; using icsharpcode.sharpziplib.zip; using system.diagnostics; using icsharpcode.sharpziplib.core; namespace testconsole {     class program    

java.util.zip.ZipOutputStream压缩无乱码(原创)

package io; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.zip.Adler32; import java.u

使用java.util.zip实现文件压缩和解压

import java.io.*; import java.util.zip.*; /** *//** *功能:zip压缩.解压 *说明:本程序通过ZipOutputStream和ZipInputStream实现了zip压缩和解压功能. *问题:由于java.util.zip包并不支持汉字,当zip文件中有名字为中文的文件时 , author by http://www.bt285.cn http://www.5a520.cn * 就会出现异常:"Exception in thread &quo

JAVA文件压缩、解压

ZIP,是一个计算机文件的压缩的算法,原名Deflate(真空),发明者为菲利普·卡兹(Phil Katz)),他于1989年1月公布了该格式的资料.ZIP通常使用后缀名".zip",它的MIME格式为 application/zip .目前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式以及开放源码的7-Zip格式.从性能上比较,RAR格式较ZIP格式压缩率较高,但是它的压缩时间远远高于Zip.而7-Zip(7z)由于提供了免费的压缩工具而逐渐在更多的领域得到应用.JA

Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压

zip格式 压缩: zip -r [目标文件名].zip [原文件/目录名] 解压: unzip [原文件名].zip 1 2 1 2 注:-r参数代表递归 tar格式(该格式仅仅打包,不压缩) 打包:tar -cvf [目标文件名].tar [原文件名/目录名] 解包:tar -xvf [原文件名].tar 1 2 1 2 注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名. t

Zip 压缩、解压技术在 HTML5 浏览器中的应用

原文:Zip 压缩.解压技术在 HTML5 浏览器中的应用 JSZip 是一款可以创建.读取.修改 .zip 文件的 javaScript 工具.在 web 应用中,免不了需要从 web 服务器中获取资源,如果可以将所有的资源都合并到一个 .zip 文件中,这时候只需要做一次请求,这样既减少了服务器的压力,同时也可以加快 web 应用的呈现速度. 今天就来探讨下 JSZip 如何与 HT 拓扑应用结合.先来看看这期 Demo 的效果图:   第一步.需要将应用对相关资源打包成 .zip 文件,

Linux下常见文件格式的压缩、解压小结

大致总结了一下linux下各种格式的压缩包的压缩.解压方法.但是部分方法我没有用到,也就不全,希望大家帮我补充,我们将随时修改完善,谢谢! .tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------------------------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.gz 压缩:g

asp.net SharpZipLib的压缩与解压问题_实用技巧

我使用SharpZipLib.dll中遇到的问题是:利用SharpZipLib压缩后生成的*.rar文件,利用其可以正常解压,但如果使用文件右击压缩生成的*.RAR文件,在解压过程中出错,具体报错信息:Wrong Local header signature: 0x21726152 ;但*.zip文件可正常解压. 具体压缩.解压代码实现参照网络上的代码,贴出概要代码: 复制代码 代码如下: /// <summary> /// 压缩文件 /// </summary> /// <

大文件(1g左右)-压缩、解压 大文件 C#

问题描述 压缩.解压 大文件 C# 如何用c#写一个压缩.解压的文件 文件大小为1G左右.我用 ICSharpCode.SharpZipLib.Zip;这个组件,只能实现小文件的压缩,不能实现大文件的压缩,一压缩就报错.哪位有什么好的方法实现大文件压缩呢. 解决方案 C# 文件压缩与解压c#解压.压缩文件C#下文件的压缩与解压