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);
        }
    }
  • 相关阅读:
    html添加遮罩层
    html绝对定位如何居中
    springboot上传文件到本地服务器
    遍历一个文件目录,把所有的子目录都列出来
    Java判断cookie中是否有某个具体的cookie
    Redis 如何打开rdb 文件
    crontab -e 如何保存退出
    linux服务器设备上没有空间
    IDEA的SonarLint插件报错Unable to create symbol table for
    使用Rome读取RSS报错,org.xml.sax.SAXParseException: 前言中不允许有内容。
  • 原文地址:https://www.cnblogs.com/94xiyang/p/10245034.html
Copyright © 2011-2022 走看看