`
d2hellen
  • 浏览: 105708 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

[转]GZIP压缩解压类

    博客分类:
  • JAVA
阅读更多
当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**
 * GZIP压缩解压类
 */
public class MessageGZIP {
    
    private static String encode = "utf-8";//"ISO-8859-1"
    
    public String getEncode() {
        return encode;
    }

    /*
     * 设置 编码,默认编码:UTF-8
     */
    public void setEncode(String encode) {
        MessageGZIP.encode = encode;
    }

    /*
     * 字符串压缩为字节数组
     */
    public static byte[] compressToByte(String str){
        if (str == null || str.length() == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip;
        try {
            gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes(encode));
            gzip.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return out.toByteArray();
    }

    /*
     * 字符串压缩为字节数组
     */
    public static byte[] compressToByte(String str,String encoding){
        if (str == null || str.length() == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip;
        try {
            gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes(encoding));
            gzip.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return out.toByteArray();
    }

    /*
     * 字节数组解压缩后返回字符串
     */
    public static String uncompressToString(byte[] b) {
        if (b == null || b.length == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ByteArrayInputStream in = new ByteArrayInputStream(b);

        try {
            GZIPInputStream gunzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;
            while ((n = gunzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return out.toString();
    }

    /*
     * 字节数组解压缩后返回字符串
     */
    public static String uncompressToString(byte[] b, String encoding) {
        if (b == null || b.length == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ByteArrayInputStream in = new ByteArrayInputStream(b);

        try {
            GZIPInputStream gunzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;
            while ((n = gunzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            return out.toString(encoding);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}


分享到:
评论

相关推荐

    基于java的开发源码-用GZIP压缩解压文件.zip

    基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩解压文件.zip 基于java的开发源码-用GZIP压缩...

    Qt之zlib库实现gzip压缩解压源码

    该案例通过zlib实现gzip的压缩解压功能,包括解压gzip字符串、图片两个案例;提供了zlib1211的源码包和对应编译后生成的文件; 相应说明参考笔者博客:Qt笔记8--zlib实现gzip解压,链接...

    gzip.rar_C gzip源码_c语言gzip_gzip压缩_gzip解压_poetryfem

    本文将深入探讨gzip的原理、C语言实现细节以及如何进行gzip压缩和解压缩。 首先,gzip基于著名的DEFLATE算法,该算法结合了LZ77(一种字典压缩方法)和霍夫曼编码(一种变长编码技术)。在C语言中实现gzip,我们...

    Java用GZIP压缩解压文件源码

    总结,Java中的GZIP压缩和解压缩文件是通过`GZIPOutputStream`和`GZIPInputStream`类实现的。了解并掌握这些基础知识对于进行Java文件处理和数据传输是非常重要的。同时,根据项目需求,你可能还需要考虑其他优化和...

    GZIP压缩解压动态库

    压缩包子文件的文件名称列表中,“IRAPGZip.dll”很可能是这个GZIP压缩解压库的实现文件,它包含实现GZIP压缩和解压缩功能的函数和类。"Project2.exe"可能是一个示例程序或测试程序,用于演示如何使用这个动态库。而...

    Delphi gzip 压缩 解压 zlib 源码(128版,123版)

    在Delphi中,我们可以直接利用`zlib`库来处理gzip压缩,因为它支持多种压缩和解压缩格式。`zlib.123`和`zlib.128`可能是两个不同版本的Delphi封装的zlib库,可能分别对应版本号123和128,其中123版包含了一个示例...

    利用JAVASCRIPT即你想那个GZIP压缩与解压缩

    标题中的“利用JAVASCRIPT实现GZIP压缩与解压缩”指的是在JavaScript环境中,我们可以使用原生或第三方库来处理GZIP格式的压缩和解压缩操作。GZIP是一种广泛使用的数据压缩格式,常用于减少网络传输的数据量,尤其是...

    pako gzip 压缩和解压缩(支持中文)

    在本项目中,我们将关注如何使用pako库进行gzip压缩和解压缩,并解决在处理中英文内容时可能出现的乱码问题。 首先,让我们详细了解pako库。pako是基于zlib库的一个轻量级实现,它在浏览器和Node.js环境中都能运行...

    Sun 自带的Gzip压缩解压xml实例

    标题 "Sun 自带的Gzip压缩解压xml实例" 涉及到的是Java编程语言中使用内置库进行Gzip压缩和解压XML文件的方法。Gzip是一种广泛使用的数据压缩格式,常用于在网络上传输数据时减少文件大小,提高传输效率。在Java中,...

    易语言GZIP解压缩

    易语言GZIP解压缩源码,GZIP解压缩,GZIP压缩,GZIP解压,InitDecompression,InitCompression,CreateDecompression,CreateCompression,ResetDecompression,ResetCompression,DestroyDecompression,DeInitCompression,...

    Java用GZIP压缩解压文件.rar

    一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...

    Java用GZIP压缩解压文件

    要使用GZIP压缩文件,我们首先创建一个`FileOutputStream`对象,然后通过它创建一个`GZIPOutputStream`。将要压缩的数据写入`GZIPOutputStream`,完成后记得关闭流。以下是一个简单的示例: ```java import java.io...

    易语言gzip解压缩模块

    易语言gzip解压缩模块源码,gzip解压缩模块,PeLoader_LoadLibrary,PeLoader_FreeLibrary,PeLoader_GetProcAddress,PeLoader_GetEntryPoint,Call,初始化,GZIP压缩,GZIP解压

    Delphi解压gzip字符串例程

    本示例主要涉及如何在Delphi中处理gzip压缩的字符串,包括解压和压缩。 在描述中提到的"完整的库文件代码"可能是指`DelphiZLib.123`,这是一个很可能包含`ZLib`库的文件。`ZLib`是一个开源的压缩库,支持多种压缩...

    JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    java,JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    VC6 gzip 压缩解压 测试代码 使用gzip.dll

    服务器响应时,如果返回的数据是gzip压缩的,将在`Content-Encoding`头中设置`gzip`。 在VC6环境下,你还需要考虑错误处理,例如检查`gzopen()`、`gzwrite()`和`gzread()`的返回值,它们可能会返回NULL或负数来表示...

    使用libcurl获取经过gzip压缩的网页文件

    本文将深入探讨如何使用libcurl获取并解压这些经过gzip压缩的网页文件。 首先,理解libcurl的基本工作原理。libcurl是一个C语言库,提供了一系列函数接口,用于在各种协议下传输数据。对于HTTP协议,libcurl可以...

    php zip gzip tar..压缩解压缩类

    这个资源包包含了处理zip、gzip和tar等压缩格式的类,提供了方便的方法来完成这些工作。以下是对这些知识点的详细说明: 1. **PHP**:PHP(PHP:Hypertext Preprocessor)是一种开源的服务器端脚本语言,广泛用于...

    gzip内存解压压缩(libz.so库)

    首先,需要包含`zlib.h`头文件,并使用`gzbuffer()`设置缓冲区大小,然后调用`gzopen()`创建一个指向内存的gzip压缩流,最后使用`gzwrite()`写入数据并调用`gzclose()`关闭流完成压缩。 2. **内存解压**:解压缩...

    java中GZIP压缩解压类使用实例

    Java 中 GZIP 压缩解压类使用实例 Java 中 GZIP 压缩解压类使用实例主要介绍了 Java 中 GZIP 压缩解压类使用实例的相关资料,需要的朋友可以参考下。在实际应用中,数据传输是非常频繁的,为了节省流量,我们常常...

Global site tag (gtag.js) - Google Analytics