yxl1108 发表于 2015-07-22 17:16

数据的压缩和解压

再也不用担心数据压缩和解压的问题了。
支持 java c# dephi 调用

代码:package com.xulin.utils;

import java.io.ByteArrayOutputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterOutputStream;

import org.apache.commons.codec.binary.Base64;

/**
* 支持Delphi C# java三方压缩
*
* @author xulin
*
*/
public class Zip {

    /**
   * 压缩数据以UTF-8编码
   *
   * @param data
   * @return 编码后的字符串
   */
    public static String compressData(String data) {
      try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            DeflaterOutputStream zos = new DeflaterOutputStream(bos);
            zos.write(data.getBytes("UTF-8"));
            zos.close();
            return new String(getenBASE64inCodec(bos.toByteArray()));
      } catch (Exception ex) {
            ex.printStackTrace();
            return "ZIP_ERR";
      }
    }

    /**
   * 解压缩数据以UTF-8编码
   *
   * @param encdata
   * @return 解码后的字符串
   */
    public static String decompressData(String encdata) {
      try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            InflaterOutputStream zos = new InflaterOutputStream(bos);
            zos.write(getdeBASE64inCodec(encdata));
            zos.close();
            return new String(bos.toByteArray(), "UTF-8");
      } catch (Exception ex) {
            ex.printStackTrace();
            return "UNZIP_ERR";
      }
    }

    /**
   * 调用apache的编码方法
   */
    private static String getenBASE64inCodec(byte[] b) {
      if (b == null)
            return null;
      return new String((new Base64()).encode(b));
    }

    /**
   * 调用apache的解码方法
   */
    private static byte[] getdeBASE64inCodec(String s) {
      if (s == null)
            return null;
      return new Base64().decode(s.getBytes());
    }
}Zip.javapackage com.xulin.utils;

import java.io.ByteArrayOutputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterOutputStream;

import org.apache.commons.codec.binary.Base64;

/**
* 支持Delphi C# java三方压缩
*
* @author xulin
*
*/
public class Zip {

    /**
   * 压缩数据以UTF-8编码
   *
   * @param data
   * @return 编码后的字符串
   */
    public static String compressData(String data) {
      try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            DeflaterOutputStream zos = new DeflaterOutputStream(bos);
            zos.write(data.getBytes("UTF-8"));
            zos.close();
            return new String(getenBASE64inCodec(bos.toByteArray()));
      } catch (Exception ex) {
            ex.printStackTrace();
            return "ZIP_ERR";
      }
    }

    /**
   * 解压缩数据以UTF-8编码
   *
   * @param encdata
   * @return 解码后的字符串
   */
    public static String decompressData(String encdata) {
      try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            InflaterOutputStream zos = new InflaterOutputStream(bos);
            zos.write(getdeBASE64inCodec(encdata));
            zos.close();
            return new String(bos.toByteArray(), "UTF-8");
      } catch (Exception ex) {
            ex.printStackTrace();
            return "UNZIP_ERR";
      }
    }

    /**
   * 调用apache的编码方法
   */
    private static String getenBASE64inCodec(byte[] b) {
      if (b == null)
            return null;
      return new String((new Base64()).encode(b));
    }

    /**
   * 调用apache的解码方法
   */
    private static byte[] getdeBASE64inCodec(String s) {
      if (s == null)
            return null;
      return new Base64().decode(s.getBytes());
    }
}

renxiao2003 发表于 2015-08-12 11:13

java有zlib库好像是压缩解压的。
页: [1]
查看完整版本: 数据的压缩和解压