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 学习篇] git commit原理 --实践体会
    [git 学习篇]工作区和暂存区
    [git 学习篇] git文件版本回退再学习
    [git 学习篇]版本回退
    [git 学习篇] 修改文件
    [git 学习篇] 提交文件
    [git 学习篇] --创建git创库
    [测试框架学习] 测试框架的结构包含
    [python测试框架] http接口测试框架
    向SharePoint页面添加后台代码
  • 原文地址:https://www.cnblogs.com/kjtt/p/15243599.html
Copyright © 2011-2022 走看看