`
ddh9504
  • 浏览: 112241 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ZLib压缩工具

    博客分类:
  • java
阅读更多

package com.hisuper.utils;
import java.io.ByteArrayOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.util.zip.Deflater;  
import java.util.zip.DeflaterOutputStream;  
import java.util.zip.Inflater;  
import java.util.zip.InflaterInputStream;  
 
/** 
 * ZLib压缩工具 
 *  
 * @author dhdu@qq.com
 * @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 
     *            待压缩数据 
     *  
     * @param os 
     *            输出流 
     */ 
    public static void compress(byte[] data, OutputStream os) {  
        DeflaterOutputStream dos = new DeflaterOutputStream(os);  
 
        try {  
            dos.write(data, 0, data.length);  
 
            dos.finish();  
 
            dos.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
 
    /** 
     * 解压缩 
     *  
     * @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;  
    }  
 
    /** 
     * 解压缩 
     *  
     * @param is 
     *            输入流 
     * @return byte[] 解压缩后的数据 
     */ 
    public static byte[] decompress(InputStream is) {  
        InflaterInputStream iis = new InflaterInputStream(is);  
        ByteArrayOutputStream o = new ByteArrayOutputStream(1024);  
        try {  
            int i = 1024;  
            byte[] buf = new byte[i];  
 
            while ((i = iis.read(buf, 0, i)) > 0) {  
                o.write(buf, 0, i);  
            }  
 
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return o.toByteArray();  
    }  

分享到:
评论

相关推荐

    zlib压缩工具

    **zlib压缩工具详解** 在IT领域,数据压缩是一种常见的技术,用于减小文件或数据流的大小,以便更有效地存储或传输。zlib库是一个广泛使用的开源压缩库,由Jean-loup Gailly和Mark Adler开发,它提供了对DEFLATE...

    Zlib压缩解压工具

    Zlib压缩解压工具是一款基于Zlib库的实用程序,用于对数据进行高效压缩和解压缩。Zlib是由Jean-loup Gailly和Mark Adler开发的开源库,它广泛应用于各种软件开发,尤其是在网络传输和文件存储方面。该工具特别适合...

    zlib压缩文件小工具

    在IT行业中,压缩技术是数据存储和传输领域...通过Python的`zlib`模块,我们可以轻松地对文件进行压缩和解压缩,创建自己的压缩工具,满足日常的文件处理需求。了解和掌握这些知识,将有助于提升在IT领域的技能和效率。

    zlib的windows端应用工具

    1. **Offzip**:这是一款基于zlib的命令行解压缩工具,用于处理使用zlib压缩算法的文件。用户可以通过命令行参数指定操作,如解压文件、查看压缩文件内容等。在Windows 7系统下,如果图形界面(GUI)不可用,Offzip...

    zlib压缩解压缩工具,包含源代码

    **zlib压缩原理** zlib库采用的是DEFLATE压缩算法,该算法结合了LZ77(Lempel-Ziv)预测和霍夫曼编码(Huffman Coding)两种技术。LZ77用于查找文本中的重复模式并创建长度和距离的编码,而霍夫曼编码则是一种可变...

    zlib压缩算法详解

    【zlib压缩算法详解】 zlib是一个开源的压缩库,广泛应用于数据压缩,如gzip、zlib自身以及图像格式PNG中。这些工具和格式都基于deflate算法,一种结合了LZ77(Lempel-Ziv)和Huffman编码的高效压缩方法。 **...

    java_ZLib压缩工具的标准代码_android

    一些工具类代码块的标准代码: 压缩, return byte[] 压缩后的数据 解压缩, return byte[] 解压缩后的数据

    C++ 使用zlib压缩和解压文件

    标题"**C++使用zlib压缩和解压文件**"所涉及的核心知识点包括: 1. **C++编程**:使用C++进行文件操作,包括读取、写入和流处理。 2. **zlib库**:zlib是一个开源的压缩库,支持多种压缩和解压缩算法,如GZIP和...

    C++ 基于ZLIB压缩库的数据或文件的压缩与解压缩小程序.zip

    本项目“C++ 基于ZLIB压缩库的数据或文件的压缩与解压缩小程序”正是利用了ZLIB库来实现这个功能。 ZLIB库是基于DEFLATE算法的,这是一种混合了LZ77(一种字典压缩方法)和霍夫曼编码(一种熵编码方法)的高效压缩...

    zlib zlib 压缩算法示例

    根据提供的文件信息,本文将详细解释与zlib压缩算法相关的知识点。这包括zlib压缩算法的基本概念、工作原理以及在实际编程中的应用示例。 ### zlib压缩算法简介 zlib是一个广泛使用的数据压缩库,它提供了高效的...

    ZLib压缩util

    封装的java zlib压缩工具,可以方面快速的实现压缩功能

    使用zlib实现的多级文件夹的压缩

    `zlib`库是一个广泛使用的开源压缩库,它提供了强大的数据压缩和解压缩功能,但默认情况下并不直接支持对多级文件夹的压缩。针对这一限制,你提到的项目通过自定义方法实现了对多级文件夹的压缩,这在处理包含多个子...

    QT4.7 + ZLIB压缩解压测试工程

    在这个“QT4.7 + ZLIB压缩解压测试工程”中,开发者可能创建了一个实例,演示了如何在QT4.7环境下集成和使用ZLIB库进行文件或数据的压缩与解压。以下是这个项目可能涉及的关键知识点: 1. **ZLIB库的集成**:首先,...

    pb做zlib压缩解压

    标题中的“pb做zlib压缩解压”指的是使用PowerBuilder(简称pb)这一编程工具,结合zlib库来实现数据的压缩与解压缩功能。在IT行业中,PowerBuilder是一种广泛使用的面向对象的可视化开发工具,尤其适用于构建数据库...

    PB使用Zlib压缩BLOB

    "PB使用Zlib压缩BLOB"这个主题就是关于如何在PowerBuilder应用中利用Zlib库来压缩和解压缩BLOB数据的方法。 Zlib是一个开源的、跨平台的数据压缩库,广泛应用于多种编程语言和系统中。它提供了一套高效且灵活的API...

    z_file.rar_.Z压缩_z-file_zlib_zlib 压缩文件_文件压缩

    本文将深入探讨“z_file.rar_.Z压缩_z-file_zlib_zlib 压缩文件_文件压缩”这一主题,主要关注.z压缩、z-file、zlib以及zlib压缩文件的相关知识点。 首先,我们来看“.z”压缩格式。这是一种较早的文件压缩格式,...

    数据压缩与解压库zlib

    2. `zlib-1.3.1.tar.xz`:这个文件则是先用tar打包,然后使用xz压缩工具进行了压缩。xz提供了更高的压缩比,但解压缩速度相对较慢。选择`.xz`格式可能是为了在可用磁盘空间有限的情况下提供更小的文件大小。 3. `...

    zlib压缩算法规范文档

    **zlib压缩算法**是一种广泛应用于网络数据传输和文件存储的高效压缩算法。它结合了LZ77(一种基于滑动窗口的无损压缩算法)和霍夫曼编码(一种变字长编码方法),旨在提供高压缩比的同时,保持解压速度快且易于实现...

    zlib 压缩函数库

    **zlib压缩函数库** zlib是一个开源的C语言库,专为数据压缩而设计,广泛应用于各种软件和操作系统中。它提供了高效且灵活的压缩和解压缩功能,支持多种数据格式,包括著名的gzip和deflate算法。zlib库不仅在互联网...

    使用ZLIB库压缩解压源码(支持多级文件目录)

    在IT行业中,压缩和解压缩数据是常见的任务,特别是在存储和传输大量数据时。...通过理解和使用ZLIB库,开发者可以创建自己的压缩和解压缩工具,满足特定需求,比如在游戏开发、文件传输或数据存储等领域。

Global site tag (gtag.js) - Google Analytics