JAVA의 deflate 압축 구현 방법

2637 단어 javadeflate압축
파일의 전송 과정에서 큰 파일이 더욱 편리하고 신속하게 전송될 수 있도록 일반적으로 압축된 방법으로 파일을 압축한 후에 전송한다. 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 압축 실현 방법은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 될 수 있고 저희를 많이 사랑해 주시기 바랍니다.

좋은 웹페이지 즐겨찾기