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 下内存检查工具 valgrind 及 sanitizer 编译选项及静态检查工具
    jQuery中 inArray
    CLEAN crxMouse Gestures 插件被标记为不安全
    如何理解DMZ?
    如何完整备份浏览器数据(Chrome、Firefox)
    Windows 分屏工具
    JS监听H5返回
    华为账号安全性怎么样?
    IOS Safari keyup不生效如何解决?
    如何下载JD图片 不带logo图片?
  • 原文地址:https://www.cnblogs.com/94xiyang/p/10245034.html
Copyright © 2011-2022 走看看