Spec-Zone.ru › OpenJDK 8

Класс Inflater

  • java.lang.Object
    • java.util.zip.Inflater

public class Inflater
extends Object

Этот класс предоставляет поддержку декомпрессии общего назначения с использованием популярной библиотеки сжатия ZLIB. Библиотека ZLIB была первоначально разработана в рамках стандарта графики PNG и не защищена патентами. Она полностью описана в спецификациях в описании пакета java.util.zip.

Следующий фрагмент кода демонстрирует тривиальное сжатие и распаковку строки с использованием Deflater и Inflater.

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()

Возвращает true, если для декомпрессии требуется предопределенный словарь.

boolean needsInput()

Возвращает true, если в буфере ввода нет данных.

void reset()

Сбрасывает декомпрессор, чтобы можно было обработать новый набор входных данных.

void setDictionary(byte[] b)

Устанавливает предопределенный словарь в заданный массив байтов.

void setDictionary(byte[] b, int off, int len)

Устанавливает предопределенный словарь в заданный массив байтов.

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 - начальный смещение входных данных
len - длина входных данных
См. также:
needsInput()

setInput

public void setInput(byte[] b)

Устанавливает входные данные для декомпрессии. Должно вызываться всякий раз, когда needsInput() возвращает true, указывая на необходимость дополнительных входных данных.

Параметры:
b - байты входных данных
См. также:
needsInput()

setDictionary

public void setDictionary(byte[] b,
                          int off,
                          int len)

Устанавливает предопределённый словарь в заданный массив байтов. Должно вызываться, когда inflate() возвращает 0, а needsDictionary() возвращает true, указывая на необходимость предопределённого словаря. Метод getAdler() можно использовать для получения значения Adler-32 нужного словаря.

Параметры:
b - байты данных словаря
off - начальный смещение данных
len - длина данных
См. также:
needsDictionary(), getAdler()

setDictionary

public void setDictionary(byte[] b)

Устанавливает предопределённый словарь в заданный массив байтов. Должно вызываться, когда inflate() возвращает 0, а needsDictionary() возвращает true, указывая на необходимость предопределённого словаря. Метод getAdler() можно использовать для получения значения Adler-32 нужного словаря.

Параметры:
b - байты данных словаря
См. также:
needsDictionary(), getAdler()

getRemaining

public int getRemaining()

Возвращает общее количество байтов, оставшихся в буфере входных данных. Это можно использовать для определения оставшихся байтов в буфере входных данных после завершения декомпрессии.

Возвращает:
общее количество байтов, оставшихся в буфере входных данных

needsInput

public boolean needsInput()

Возвращает true, если в буфере входных данных не осталось данных. Это можно использовать для определения, следует ли вызвать #setInput, чтобы предоставить больше входных данных.

Возвращает:
true, если в буфере входных данных не осталось данных

needsDictionary

public boolean needsDictionary()

Возвращает true, если для декомпрессии требуется предопределённый словарь.

Возвращает:
true, если для декомпрессии требуется предопределённый словарь
См. также:
setDictionary(byte[], int, int)

finished

public boolean finished()

Возвращает true, если достигнут конец потока сжатых данных.

Возвращает:
true, если достигнут конец потока сжатых данных

inflate

public int inflate(byte[] b,
                   int off,
                   int len)
            throws DataFormatException

Декомпримирует байты в указанный буфер. Возвращает фактическое количество декомпримированных байтов. Значение 0 указывает, что необходимо вызвать needsInput() или needsDictionary(), чтобы определить, требуются ли дополнительные входные данные или предопределённый словарь. В последнем случае, getAdler() можно использовать для получения значения Adler-32 требуемого словаря.

Параметры:
b - буфер для декомпримированных данных
off - начальный смещение данных
len - максимальное количество декомпримированных байтов
Возвращает:
фактическое количество декомпримированных байтов
Исключения:
DataFormatException - если формат сжатых данных некорректен
См. также:
needsInput(), needsDictionary()

inflate

public int inflate(byte[] b)
            throws DataFormatException

Декомпримирует байты в указанный буфер. Возвращает фактическое количество декомпримированных байтов. Значение 0 указывает, что необходимо вызвать 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()

Закрывает декомпрессор при сборе мусора.

Переопределяет:
finalize в классе Object
См. также:
WeakReference, PhantomReference

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API