zoukankan      html  css  js  c++  java
  • Android GZIP压缩与解压

    public class GZIP {
        /**
         * 字符串的压缩
         * 
         * @param str
         *            待压缩的字符串
         * @return 返回压缩后的字符串
         * @throws IOException
         */
        public static String compress(String str) throws IOException {
            if (null == str || str.length() <= 0) {
                return str;
            }
            // 创建一个新的输出流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            // 使用默认缓冲区大小创建新的输出流
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            // 将字节写入此输出流
            gzip.write(str.getBytes("utf-8")); // 因为后台默认字符集有可能是GBK字符集,所以此处需指定一个字符集
            gzip.close();
            // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
            return out.toString("ISO-8859-1");
        }
    
        /**
         * 字符串的解压
         * 
         * @param str
         *            对字符串解压
         * @return 返回解压缩后的字符串
         * @throws IOException
         */
        public static String unCompress(String str) throws IOException {
            if (null == str || str.length() <= 0) {
                return str;
            }
            // 创建一个新的输出流
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            // 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组
            ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
            // 使用默认缓冲区大小创建新的输入流
            GZIPInputStream gzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n = 0;
    
            // 将未压缩数据读入字节数组
            while ((n = gzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            // 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
            return out.toString("utf-8");
        }
        
        
        public static void main(String[] args) throws IOException {
            String str="看甲方时点击翻身肯
    ";  //内容大小控制在240byte, >240 进行压缩·否则不压··
            System.out.println("原文大小:"+str.getBytes().length+" 
    压缩前:"+str);
            
            String compress = GZIP.compress(str);
            System.out.println("解压大小:"+compress.getBytes().length+" 
    压缩后:"+compress);
            
            String uncompress = GZIP.unCompress(compress);
            System.out.println("解压大小:"+uncompress.getBytes().length+" 
    解压缩:"+uncompress);
        }
    }
  • 相关阅读:
    再次总结Linux最常用命令
    sort命令实战
    JavaScript基础:
    CSS样式基础:
    HTML基础:
    spider(一)
    xgene:疾病相关基因,耳聋,彩色,老年痴呆,帕金森
    xgene:肿瘤相关基因 KRAS,,BRAF,,通路PI3K-AKT
    查询当前Database下所有Datatable及所有记录数
    IIS注册.netframework4.0指令
  • 原文地址:https://www.cnblogs.com/94xiyang/p/10245034.html
Copyright © 2011-2022 走看看