JavaTM Platform
Standard Ed. 6

java.util.zip
클래스 Inflater

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


public class Inflater
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
 }
 

관련 항목:
Deflater

생성자 의 개요
Inflater ()
          새로운 디컴프레서를 작성합니다.
Inflater (boolean nowrap)
          새로운 디컴프레서를 작성합니다.
 
메소드의 개요
 void end ()
          디컴프레서를 닫아 압축 해제된 입력을 모두 파기합니다.
protected  void finalize ()
          가베지 컬렉션을 했을 때에 디컴프레서를 닫습니다.
 boolean finished ()
          압축 데이터 스트림의 마지막에 달했을 경우에 true 를 돌려줍니다.
 int getAdler ()
          압축 해제 데이터의 ADLER-32 치를 돌려줍니다.
 long getBytesRead ()
          지금까지 입력된, 압축된 바이트의 총수를 돌려줍니다.
 long getBytesWritten ()
          지금까지 출력된, 압축 해제된 바이트의 총수를 돌려줍니다.
 int getRemaining ()
          입력 버퍼에 남아 있는 바이트의 총수를 돌려줍니다.
 int getTotalIn ()
          지금까지 입력된, 압축된 바이트의 총수를 돌려줍니다.
 int getTotalOut ()
          지금까지 출력된, 압축 해제된 바이트의 총수를 돌려줍니다.
 int inflate (byte[] b)
          지정된 버퍼에 바이트를 압축 해제합니다.
 int inflate (byte[] b, int off, int len)
          지정된 버퍼에 바이트를 압축 해제합니다.
 boolean needsDictionary ()
          pre-set 사전가 압축 해제에 필요한 경우에 true 를 돌려줍니다.
 boolean needsInput ()
          입력 버퍼에 데이터가 남지 않은 경우에 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)
          압축 해제를 위한 입력 데이터를 설정합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

Inflater

public Inflater(boolean nowrap)
새로운 디컴프레서를 작성합니다. 파라미터 nowrap 가 true 의 경우는, ZLIB 헤더 및 체크 섬 필드는 사용되지 않습니다. 이것에 의해, GZIP 와 PKZIP 의 양쪽 모두로 사용되는 압축 형식과의 호환성이 확보됩니다.  

주:nowrap 옵션을 사용하는 경우는, 입력으로서 특별한 「더미」바이트를 지정할 필요가 있습니다. 이것은, 최적화를 실시하기 위해서(때문에) ZLIB 네이티브 라이브러리에서 필요합니다.

파라미터:
nowrap - true 의 경우는 GZIP 호환의 압축을 지원

Inflater

public Inflater()
새로운 디컴프레서를 작성합니다.

메소드의 상세

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 사전를 지정의 바이트 배열로 설정합니다. inflate()가 0 을 돌려주는 경우, 또는 needsDictionary()가 pre-set 사전를 필요로 하는 것을 나타내는 true 를 돌려주는 경우는, 이 메소드를 호출할 필요가 있습니다. getAdler() 메소드를 사용해 필요한 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 사전 데이터 바이트
off - 데이터의 개시 오프셋(offset)
len - 데이터의 길이
관련 항목:
needsDictionary() , getAdler()

setDictionary

public void setDictionary(byte[] b)
pre-set 사전를 지정의 바이트 배열로 설정합니다. inflate()가 0 을 돌려주는 경우, 또는 needsDictionary()가 pre-set 사전를 필요로 하는 것을 나타내는 true 를 돌려주는 경우는, 이 메소드를 호출할 필요가 있습니다. getAdler() 메소드를 사용해 필요한 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 사전 데이터 바이트
관련 항목:
needsDictionary() , getAdler()

getRemaining

public int getRemaining()
입력 버퍼에 남아 있는 바이트의 총수를 돌려줍니다. 이 메소드는, 압축 해제가 종료한 뒤에 입력 버퍼에 몇 바이트 남아 있을까를 조사하는데 사용할 수 있습니다.

반환값:
입력 버퍼에 남아 있는 바이트의 총수

needsInput

public boolean needsInput()
입력 버퍼에 데이터가 남지 않은 경우에 true 를 돌려줍니다. 이 메소드를 사용하면(자), 입력 데이터를 추가하기 위해서 #setInput 를 호출할 필요가 있을지 어떨지를 판단할 수 있습니다.

반환값:
입력 버퍼에 데이터가 남지 않은 경우는 true

needsDictionary

public boolean needsDictionary()
pre-set 사전가 압축 해제에 필요한 경우에 true 를 돌려줍니다.

반환값:
pre-set 사전가 압축 해제에 필요한 경우는 true
관련 항목:
setDictionary(byte[], int, int)

finished

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

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

inflate

public int inflate(byte[] b,
                   int off,
                   int len)
            throws DataFormatException 
지정된 버퍼에 바이트를 압축 해제합니다. 실제로 압축 해제된 바이트수를 돌려줍니다. 반환값 0 은, 입력 데이터나 pre-set 라이브러리가 한층 더 필요한가 어떤가를 판단하기 위해서(때문에) needsInput() 또는 needsDictionary()를 호출할 필요가 있는 것을 나타냅니다. 후자의 경우, getAdler()를 사용해, 요구되는 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 압축 해제되는 데이터용의 버퍼
off - 데이터의 개시 오프셋(offset)
len - 압축 해제되는 최대 바이트수
반환값:
압축 해제되는 실효 바이트수
예외:
DataFormatException - 압축 데이터 형식이 무효인 경우
관련 항목:
needsInput() , needsDictionary()

inflate

public int inflate(byte[] b)
            throws DataFormatException 
지정된 버퍼에 바이트를 압축 해제합니다. 실제로 압축 해제된 바이트수를 돌려줍니다. 반환값 0 은, 입력 데이터나 pre-set 라이브러리가 한층 더 필요한가 어떤가를 판단하기 위해서(때문에) needsInput() 또는 needsDictionary()를 호출할 필요가 있는 것을 나타냅니다. 후자의 경우, getAdler()를 사용해, 요구되는 사전의 Adler-32 치를 취득할 수 있습니다.

파라미터:
b - 압축 해제되는 데이터용의 버퍼
반환값:
압축 해제되는 실효 바이트수
예외:
DataFormatException - 압축 데이터 형식이 무효인 경우
관련 항목:
needsInput() , needsDictionary()

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() 메소드에 의해도 자동적으로 불려 갑니다. 이 메소드가 불려 간 뒤의 Inflater 객체의 동작은 보증되지 않습니다.


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 도 참조해 주세요.