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

    最近碰到了一个按GZIP解压指定的输入流数据,备份下

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.zip.GZIPInputStream;
    import java.util.zip.GZIPOutputStream;
    
    /**
     * 压缩,解压类
     */
    public class ZipUtils {
    
        /**
         * 压缩指定的字符串
         *
         * @param str
         * @return
         * @throws IOException
         */
        public static byte[] compress(String str) throws IOException {
    
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes());
            gzip.close();
            return out.toByteArray();
        }
    
        /**
         * 解压缩字节数组
         *
         * @param b
         * @return
         * @throws IOException
         */
        public static byte[] uncompress(byte[] b) throws IOException {
    
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ByteArrayInputStream in = new ByteArrayInputStream(b);
            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.toByteArray();
        }
    
        // 测试方法
        public static void main(String[] args) throws IOException {
    
        }
    
    }  

    注意事项

          解压方法最后不要转成字符串  out.toString(); 否则解压的时候会出现  Not in GZIP format 错误

     

  • 相关阅读:
    hdu 4948 Kingdom(推论)
    codeforces 407 div1 A题(Functions again)
    Atcoder regular Contest 073(C
    Atcoder regular Contest 073(D
    Nginx阅读笔记(二)之location的用法
    Nginx阅读笔记
    django virtualenv
    Supervisor
    捕捉攻击者
    django user模块改写
  • 原文地址:https://www.cnblogs.com/duanxingxing/p/5502868.html
Copyright © 2011-2022 走看看