首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[转]GZIP压缩解压种

2012-11-09 
[转]GZIP压缩解压类当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类

[转]GZIP压缩解压类
当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。

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

热点排行