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 错误

     

  • 相关阅读:
    最近几个月的感想
    Fortran 入门——C#调用Fortran DLL
    Fortran 入门——函数调用
    JQueryAjax初体验和一点感想
    【HDU】1796 How many integers can you find
    【SGU】476 Coach's Trouble
    【HDU】2204 Eddy's爱好
    【POJ】1091 跳蚤
    【URAL】1091 Tmutarakan Exams
    【ZOJ】2836 Number Puzzle
  • 原文地址:https://www.cnblogs.com/duanxingxing/p/5502868.html
Copyright © 2011-2022 走看看