亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JAVA中的deflate壓縮實(shí)現(xiàn)方法

 更新時(shí)間:2016年09月01日 09:13:01   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇JAVA中的deflate壓縮實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在文件的傳輸過(guò)程中,為了使大文件能夠更加方便快速的傳輸,一般采用壓縮的辦法來(lái)對(duì)文件壓縮后再傳輸,JAVA中的java.util.zip包中的Deflater和Inflater類為使用者提供了DEFLATE算法的壓縮功能,以下是自已編寫的壓縮和解壓縮實(shí)現(xiàn),并以壓縮文件內(nèi)容為例說(shuō)明,其中涉及的具體方法可查看JDK的API了解說(shuō)明。

/**
   * 
   * @param inputByte
   *      待解壓縮的字節(jié)數(shù)組
   * @return 解壓縮后的字節(jié)數(shù)組
   * @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()) {
        // 解壓縮并將解壓縮后的內(nèi)容輸出到字節(jié)輸出流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
   *      待壓縮的字節(jié)數(shù)組
   * @return 壓縮后的數(shù)據(jù)
   * @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()) {
        // 壓縮并將壓縮后的內(nèi)容輸出到字節(jié)輸出流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);
      // 為了壓縮后的內(nèi)容能夠在網(wǎng)絡(luò)上傳輸,一般采用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壓縮實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論