首页 > 编程 > Java > 正文

JAVA中的deflate压缩实现方法

2019-11-26 13:54:11
字体:
来源:转载
供稿:网友

在文件的传输过程中,为了使大文件能够更加方便快速的传输,一般采用压缩的办法来对文件压缩后再传输,JAVA中的java.util.zip包中的Deflater和Inflater类为使用者提供了DEFLATE算法的压缩功能,以下是自已编写的压缩和解压缩实现,并以压缩文件内容为例说明,其中涉及的具体方法可查看JDK的API了解说明。

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

以上这篇JAVA中的deflate压缩实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表