JavaTM Platform
Standard Ed. 6

java.util.zip
클래스 Deflater

java.lang.Object 
  상위를 확장 java.util.zip.Deflater


public class Deflater
extends Object

이 클래스는, 일반적인 ZLIB 압축 라이브러리를 사용해 범용의 압축 알고리즘을 지원합니다. ZLIB 압축 라이브러리는, 당초 PNG 그래픽 표준의 일부로서 개발된 것으로, 특허로는 보호되고 있지 않습니다. 스펙의 자세한 것은,「패키지 java.util.zip 의 설명」을 참조해 주세요.

다음에,DeflaterInflater 를 사용해 캐릭터 라인을 얼마인가 압축 및 압축 해제하는 코드를 나타냅니다.

 try {
     // Encode a String into bytes
     String inputString = "blahblahblah??";
     byte[] input = inputString.getBytes("UTF-8");

     // Compress the bytes
     byte[] output = new byte[100];
     Deflater compresser = new Deflater();
     compresser.setInput(input);
     compresser.finish();
     int compressedDataLength = compresser.deflate(output);

     // Decompress the bytes
     Inflater decompresser = new Inflater();
     decompresser.setInput(output, 0, compressedDataLength);
     byte[] result = new byte[100];
     int resultLength = decompresser.inflate(result);
     decompresser.end();

     // Decode the bytes into a String
     String outputString = new String(result, 0, resultLength, "UTF-8");
 } catch(java.io.UnsupportedEncodingException ex) {
     // handle
 } catch (java.util.zip.DataFormatException ex) {
     // handle
 }
 

관련 항목:
Inflater

필드의 개요
static int BEST_COMPRESSION
          최적인 압축을 위한 압축 레벨입니다.
static int BEST_SPEED
          최고속에서의 압축을 위한 압축 레벨입니다.
static int DEFAULT_COMPRESSION
          디폴트의 압축 레벨입니다.
static int DEFAULT_STRATEGY
          디폴트의 압축 방법입니다.
static int DEFLATED
          deflate 알고리즘의 압축 메소드 (현재 지원되고 있는 것은 1 개(살) 뿐)입니다.
static int FILTERED
          작은 값이 어느 정도 랜덤에 분포하고 있는 데이터에 최적인 압축 방법입니다.
static int HUFFMAN_ONLY
          하프맨 코딩 전용의 압축 방법입니다.
static int NO_COMPRESSION
          압축하지 않는 경우의 압축 레벨입니다.
 
생성자 의 개요
Deflater ()
          디폴트의 압축 레벨로 새로운 압력을 작성합니다.
Deflater (int level)
          지정된 압축 레벨로 새로운 압력을 작성합니다.
Deflater (int level, boolean nowrap)
          지정된 압축 레벨로 새로운 압력을 작성합니다.
 
메소드의 개요
 int deflate (byte[] b)
          지정된 버퍼를 압축 데이터로 채웁니다.
 int deflate (byte[] b, int off, int len)
          지정된 버퍼를 압축 데이터로 채웁니다.
 void end ()
          압력을 닫아 압축 해제된 입력을 모두 파기합니다.
protected  void finalize ()
          가베지 컬렉션을 했을 때에 압력을 닫습니다.
 void finish ()
          이 메소드가 불려 가면(자), 압축이 입력 버퍼의 현재의 내용으로 종료할 필요가 있는 것을 나타냅니다.
 boolean finished ()
          압축 데이터의 출력 스트림의 마지막에 달했을 경우에 true 를 돌려줍니다.
 int getAdler ()
          압축 해제 데이터의 ADLER-32 치를 돌려줍니다.
 long getBytesRead ()
          지금까지 입력된, 압축 해제된 바이트의 총수를 돌려줍니다.
 long getBytesWritten ()
          지금까지 출력된, 압축된 바이트의 총수를 돌려줍니다.
 int getTotalIn ()
          지금까지 입력된, 압축 해제된 바이트의 총수를 돌려줍니다.
 int getTotalOut ()
          지금까지 출력된, 압축된 바이트의 총수를 돌려줍니다.
 boolean needsInput ()
          입력 데이터 버퍼가 빈 상태(empty)이기 (위해)때문에, setInput()를 호출해 입력을 추가할 필요가 있는 경우에 true 를 돌려줍니다.
 void reset ()
          새로운 입력 데이터세트를 처리할 수 있도록(듯이) 디플렉터를 리셋 합니다.
 void setDictionary (byte[] b)
          압축을 위한 pre-set 사전를 설정합니다.
 void setDictionary (byte[] b, int off, int len)
          압축을 위한 pre-set 사전를 설정합니다.
 void setInput (byte[] b)
          압축을 위한 입력 데이터를 설정합니다.
 void setInput (byte[] b, int off, int len)
          압축을 위한 입력 데이터를 설정합니다.
 void setLevel (int level)
          현재의 압축 레벨이 지정된 값으로 설정합니다.
 void setStrategy (int strategy)
          압축 방법이 지정된 값으로 설정합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

필드의 상세

DEFLATED

public static final int DEFLATED
deflate 알고리즘의 압축 메소드 (현재 지원되고 있는 것은 1 개(살) 뿐)입니다.

관련 항목:
정수 필드치

NO_COMPRESSION

public static final int NO_COMPRESSION
압축하지 않는 경우의 압축 레벨입니다.

관련 항목:
정수 필드치

BEST_SPEED

public static final int BEST_SPEED
최고속에서의 압축을 위한 압축 레벨입니다.

관련 항목:
정수 필드치

BEST_COMPRESSION

public static final int BEST_COMPRESSION
최적인 압축을 위한 압축 레벨입니다.

관련 항목:
정수 필드치

DEFAULT_COMPRESSION

public static final int DEFAULT_COMPRESSION
디폴트의 압축 레벨입니다.

관련 항목:
정수 필드치

FILTERED

public static final int FILTERED
작은 값이 어느 정도 랜덤에 분포하고 있는 데이터에 최적인 압축 방법입니다. 하프맨 코딩을 늘려, 캐릭터 라인 매칭을 줄입니다.

관련 항목:
정수 필드치

HUFFMAN_ONLY

public static final int HUFFMAN_ONLY
하프맨 코딩 전용의 압축 방법입니다.

관련 항목:
정수 필드치

DEFAULT_STRATEGY

public static final int DEFAULT_STRATEGY
디폴트의 압축 방법입니다.

관련 항목:
정수 필드치
생성자 의 상세

Deflater

public Deflater(int level,
                boolean nowrap)
지정된 압축 레벨로 새로운 압력을 작성합니다. 파라미터 nowrap 가 true 의 경우, ZILB 헤더 필드 및 체크 섬 필드는, GZIP 및 PKZIP 의 양쪽 모두로 사용되는 압축 형식의 지원에는 사용되지 않습니다.

파라미터:
level - 압축 레벨 (0 ~ 9)
nowrap - true 의 경우는 GZIP 호환의 압축을 사용

Deflater

public Deflater(int level)
지정된 압축 레벨로 새로운 압력을 작성합니다. 압축 데이터는 ZLIB 형식에서 생성됩니다.

파라미터:
level - 압축 레벨 (0 ~ 9)

Deflater

public Deflater()
디폴트의 압축 레벨로 새로운 압력을 작성합니다. 압축 데이터는 ZLIB 형식에서 생성됩니다.

메소드의 상세

setInput

public void setInput(byte[] b,
                     int off,
                     int len)
압축을 위한 입력 데이터를 설정합니다. needsInput()로 한층 더 입력이 필요한 것을 나타내는 true 가 돌려주어질 때는, 이 메소드를 호출할 필요가 있습니다.

파라미터:
b - 입력 데이터 바이트
off - 데이터의 개시 오프셋(offset)
len - 데이터의 길이
관련 항목:
needsInput()

setInput

public void setInput(byte[] b)
압축을 위한 입력 데이터를 설정합니다. needsInput()로 한층 더 입력이 필요한 것을 나타내는 true 가 돌려주어질 때는, 이 메소드를 호출할 필요가 있습니다.

파라미터:
b - 입력 데이터 바이트
관련 항목:
needsInput()

setDictionary

public void setDictionary(byte[] b,
                          int off,
                          int len)
압축을 위한 pre-set 사전를 설정합니다. pre-set 사전는, 이력 버퍼를 미리 결정할 수 있을 때 사용됩니다. 데이터가 나중에 Inflater.inflate()에 의해 압축 해제될 때, Inflater.getAdler()를 호출해 압축 해제에 필요한 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 사전 데이터 바이트
off - 데이터의 개시 오프셋(offset)
len - 데이터의 길이
관련 항목:
Inflater.inflate(byte[], int, int) , Inflater.getAdler()

setDictionary

public void setDictionary(byte[] b)
압축을 위한 pre-set 사전를 설정합니다. pre-set 사전는, 이력 버퍼를 미리 결정할 수 있을 때 사용됩니다. 데이터가 나중에 Inflater.inflate()에 의해 압축 해제될 때, Inflater.getAdler()를 호출해 압축 해제에 필요한 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 사전 데이터 바이트
관련 항목:
Inflater.inflate(byte[], int, int) , Inflater.getAdler()

setStrategy

public void setStrategy(int strategy)
압축 방법이 지정된 값으로 설정합니다.

파라미터:
strategy - 새로운 압축 방법
예외:
IllegalArgumentException - 압축 방법이 무효인 경우

setLevel

public void setLevel(int level)
현재의 압축 레벨이 지정된 값으로 설정합니다.

파라미터:
level - 새로운 압축 레벨 (0 ~ 9)
예외:
IllegalArgumentException - 압축 레벨이 무효인 경우

needsInput

public boolean needsInput()
입력 데이터 버퍼가 빈 상태(empty)이기 (위해)때문에, setInput()를 호출해 입력을 추가할 필요가 있는 경우에 true 를 돌려줍니다.

반환값:
입력 데이터 버퍼가 빈 상태(empty)이기 (위해)때문에, setInput()를 호출해 입력을 추가할 필요가 있는 경우에 true

finish

public void finish()
이 메소드가 불려 가면(자), 압축이 입력 버퍼의 현재의 내용으로 종료할 필요가 있는 것을 나타냅니다.


finished

public boolean finished()
압축 데이터의 출력 스트림의 마지막에 달했을 경우에 true 를 돌려줍니다.

반환값:
압축 데이터의 출력 스트림의 마지막에 달했을 경우는 true

deflate

public int deflate(byte[] b,
                   int off,
                   int len)
지정된 버퍼를 압축 데이터로 채웁니다. 실제로 압축된 데이터의 바이트수를 돌려줍니다. 반환값 0 은, 입력 데이터가 한층 더 필요한가 어떤가를 판단하기 위해서(때문에) needsInput()를 호출할 필요가 있는 것을 나타냅니다.

파라미터:
b - 압축 데이터용의 버퍼
off - 데이터의 개시 오프셋(offset)
len - 압축 데이터의 최대 바이트수
반환값:
압축 데이터의 실효 바이트수

deflate

public int deflate(byte[] b)
지정된 버퍼를 압축 데이터로 채웁니다. 실제로 압축된 데이터의 바이트수를 돌려줍니다. 반환값 0 은, 입력 데이터가 한층 더 필요한가 어떤가를 판단하기 위해서(때문에) needsInput()를 호출할 필요가 있는 것을 나타냅니다.

파라미터:
b - 압축 데이터용의 버퍼
반환값:
압축 데이터의 실효 바이트수

getAdler

public int getAdler()
압축 해제 데이터의 ADLER-32 치를 돌려줍니다.

반환값:
압축 해제 데이터의 ADLER-32 치

getTotalIn

public int getTotalIn()
지금까지 입력된, 압축 해제된 바이트의 총수를 돌려줍니다.

바이트수는 Integer.MAX_VALUE 보다 커지는 경우가 있기 (위해)때문에, 이 정보를 얻는 경우는 getBytesRead() 메소드의 (분)편을 우선적으로 사용해 주세요.

반환값:
지금까지 입력된, 압축 해제된 바이트의 총수

getBytesRead

public long getBytesRead()
지금까지 입력된, 압축 해제된 바이트의 총수를 돌려줍니다.

반환값:
지금까지 입력된, 압축 해제된 바이트의 총수 (부가 아닌 값)
도입된 버젼:
1.5

getTotalOut

public int getTotalOut()
지금까지 출력된, 압축된 바이트의 총수를 돌려줍니다.

바이트수는 Integer.MAX_VALUE 보다 커지는 경우가 있기 (위해)때문에, 이 정보를 얻는 경우는 getBytesWritten() 메소드의 (분)편을 우선적으로 사용해 주세요.

반환값:
지금까지 출력된, 압축된 바이트의 총수

getBytesWritten

public long getBytesWritten()
지금까지 출력된, 압축된 바이트의 총수를 돌려줍니다.

반환값:
지금까지 출력된, 압축된 바이트의 총수 (부가 아닌 값)
도입된 버젼:
1.5

reset

public void reset()
새로운 입력 데이터세트를 처리할 수 있도록(듯이) 디플렉터를 리셋 합니다. 현재의 압축 레벨과 압축 방법을 보관 유지합니다.


end

public void end()
압력을 닫아 압축 해제된 입력을 모두 파기합니다. 이 메소드는, 압력을 사용하지 않게 되었을 때에 호출할 필요가 있습니다만, finalize() 메소드에 의해도 자동적으로 불려 갑니다. 이 메소드가 불려 간 뒤의 Deflater 객체의 동작은 보증되지 않습니다.


finalize

protected void finalize()
가베지 컬렉션을 했을 때에 압력을 닫습니다.

오버라이드(override):
클래스 Object 내의 finalize

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.