zoukankan      html  css  js  c++  java
  • JAVA中的deflate压缩实现

    /**
         *
         * @param inputByte
         *            待解压缩的字节数组
         * @return 解压缩后的字节数组
         * @throws IOException
         */
        public static byte[] uncompress(byte[] inputByte) throws IOException {
            int len = 0;
            Inflater infl = new Inflater();
            infl.setInput(inputByte);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] outByte = new byte[1024];
            try {
                while (!infl.finished()) {
                    // 解压缩并将解压缩后的内容输出到字节输出流bos中
                    len = infl.inflate(outByte);
                    if (len == 0) {
                        break;
                    }
                    bos.write(outByte, 0, len);
                }
                infl.end();
            } catch (Exception e) {
                //
            } finally {
                bos.close();
            }
            return bos.toByteArray();
        }
    
        /**
         * 压缩.
         *
         * @param inputByte
         *            待压缩的字节数组
         * @return 压缩后的数据
         * @throws IOException
         */
        public static byte[] compress(byte[] inputByte) throws IOException {
            int len = 0;
            Deflater defl = new Deflater();
            defl.setInput(inputByte);
            defl.finish();
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] outputByte = new byte[1024];
            try {
                while (!defl.finished()) {
                    // 压缩并将压缩后的内容输出到字节输出流bos中
                    len = defl.deflate(outputByte);
                    bos.write(outputByte, 0, len);
                }
                defl.end();
            } finally {
                bos.close();
            }
            return bos.toByteArray();
        }
    
        public static void main(String[] args) {
            try {
                FileInputStream fis = new FileInputStream("D:\testdeflate.txt");
                int len = fis.available();
                byte[] b = new byte[len];
                fis.read(b);
                byte[] bd = compress(b);
                // 为了压缩后的内容能够在网络上传输,一般采用Base64编码
                String encodestr = Base64.encodeBase64String(bd);
                byte[] bi = uncompress(Base64.decodeBase64(encodestr));
                FileOutputStream fos = new FileOutputStream("D:\testinflate.txt");
                fos.write(bi);
                fos.flush();
                fos.close();
                fis.close();
            } catch (Exception e) {
                //
            }
        }
    

      

  • 相关阅读:
    git 命令图解
    tensorflow 保存及其加载
    tensorflow estimator 与 model_fn 是这样沟通的
    面向过程、面向函数、面向对象的区别浅谈
    Python 中自定义spark转换器
    pyspark 好用多了,放弃scala
    variable_scope 与 name_scope 区别
    tensorflow 条件语句与循环语句
    html 标签内部元素上下居中
    html 标签内部元素左右居中
  • 原文地址:https://www.cnblogs.com/kjtt/p/15243599.html
Copyright © 2011-2022 走看看