GZIP壓縮解壓Java類

jopen 13年前發布 | 38K 次閱讀 Java 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;  
    }  
}  </pre><br />
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!