美文网首页
Android Gzip 压缩与解压

Android Gzip 压缩与解压

作者: 青青河边踩 | 来源:发表于2017-10-21 13:07 被阅读990次
    /**
     * Created by luoliuqing on 17/10/21.
     * GZip工具类
     */
    public class GZipUtil {
        public static final String GZIP_ENCODE_UTF_8 = "UTF-8";
    
        public static final String GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";
    
        /**
         * 字符串压缩为GZIP字节数组
         * @param str
         * @param encoding
         * @return
         */
        public static byte[] compress(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) {
                Log.e("gzip compress error.", e.getMessage());
            }
            return out.toByteArray();
        }
    
        /**
         * Gzip  byte[] 解压成字符串
         * @param bytes
         * @return
         */
        public static String uncompressToString(byte[] bytes) {
            return uncompressToString(bytes, GZIP_ENCODE_UTF_8);
        }
    
    
        /**
         * Gzip  byte[] 解压成字符串
         * @param bytes
         * @param encoding
         * @return
         */
        public static String uncompressToString(byte[] bytes, String encoding) {
            if (bytes == null || bytes.length == 0) {
                return null;
            }
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(bytes);
            try {
                GZIPInputStream ungzip = new GZIPInputStream(in);
                byte[] buffer = new byte[256];
                int n;
                while ((n = ungzip.read(buffer)) >= 0) {
                    out.write(buffer, 0, n);
                }
                return out.toString(encoding);
            } catch (IOException e) {
                Log.e("gzip compress error.",e.getMessage());
            }
            return null;
        }
    
        /**
         * 判断byte[]是否是Gzip格式
         * @param data
         * @return
         */
        public static boolean isGzip(byte[] data) {
            int header = (int)((data[0]<<8) | data[1]&0xFF);
            return header == 0x1f8b;
        }
    
    }
    
    

    调用

    压缩
     GZipUtil.compress(str)
    
    解压
    GZipUtil.uncompressToString(bytes)
    

    相关文章

      网友评论

          本文标题:Android Gzip 压缩与解压

          本文链接:https://www.haomeiwen.com/subject/dgjiuxtx.html