• 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) {
                //
            }
        }
    

      

  • 相关阅读:
    fabric 上传图片并添加到 canvas 中
    fabric 序列化增加额外属性
    fabric 按钮
    将 SVG 元素转成 dataUrl
    fabric button 通过子类实现
    fabric 鼠标点击绘制折线
    fabric 撤销保存重做 队列+指针
    fabric 鼠标动态绘制图形
    fabric 右键菜单
    supervisor 使用中遇到的问题
  • 原文地址:https://www.cnblogs.com/kjtt/p/15243599.html
Copyright © 2020-2023  润新知