Spec-Zone.ru › OpenJDK 21

Класс Inflater

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

Этот класс разжимает последовательности сжатых байтов ZLIB. Последовательность входных байтов предоставляется либо в массиве байтов, либо в буфере байтов, с помощью одного из setInput() методов. Последовательность выходных байтов записывается в выходной массив байтов или буфер байтов, переданные inflate() методам.

Следующий фрагмент кода демонстрирует тривиальное сжатие и разархивацию строки с использованием 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
 }
 
Примечание API:
Для освобождения ресурсов, используемых этим Inflater, метод end() должен вызываться явно. Подклассы несут ответственность за очистку ресурсов, полученных подклассом. Подклассы, которые переопределяют Object.finalize() для выполнения очистки, должны быть изменены, чтобы использовать альтернативные механизмы очистки, такие как Cleaner, и удалить переопределённый finalize метод.
С:
1.1
См. также:
  • Deflater

Краткое описание конструкторов

Конструктор Описание
Inflater()
Создаёт новый декомпрессор.
Inflater(boolean nowrap)
Создаёт новый декомпрессор.

Краткое описание методов

Модификатор и тип Метод Описание
void end()
Закрывает декомпрессор и отбрасывает любые необработанные входные данные.
boolean finished()
Возвращает true, если достигнут конец потока сжатых данных.
int getAdler()
Возвращает значение ADLER-32 разархивированных данных.
long getBytesRead()
Возвращает общее количество сжатых входных байтов до сих пор.
long getBytesWritten()
Возвращает общее количество разархивированных выходных байтов до сих пор.
int getRemaining()
Возвращает общее количество байтов, оставшихся во входном буфере.
int getTotalIn()
Возвращает общее количество сжатых входных байтов до сих пор.
int getTotalOut()
Возвращает общее количество разархивированных выходных байтов до сих пор.
int inflate(byte[] output)
Разархивирует байты в указанный буфер.
int inflate(byte[] output, int off, int len)
Разархивирует байты в указанный буфер.
int inflate(ByteBuffer output)
Разархивирует байты в указанный буфер.
boolean needsDictionary()
Возвращает true, если для разархивирования необходим предопределённый словарь.
boolean needsInput()
Возвращает true, если в входном буфере нет данных.
void reset()
Сбрасывает декомпрессор, чтобы можно было обработать новые входные данные.
void setDictionary(byte[] dictionary)
Устанавливает предопределённый словарь в заданный массив байтов.
void setDictionary(byte[] dictionary, int off, int len)
Устанавливает предопределённый словарь в заданный массив байтов.
void setDictionary(ByteBuffer dictionary)
Устанавливает предопределённый словарь в байты заданного буфера.
void setInput(byte[] input)
Устанавливает входные данные для разархивирования.
void setInput(byte[] input, int off, int len)
Устанавливает входные данные для разархивирования.
void setInput(ByteBuffer input)
Устанавливает входные данные для разархивирования.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, 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[] input, int off, int len)
Устанавливает входные данные для декомпрессии.

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

Параметры:
input - байты входных данных
off - начальный смещение входных данных
len - длина входных данных
См. также:
  • needsInput()

setInput

public void setInput(byte[] input)
Устанавливает входные данные для декомпрессии.

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

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

setInput

public void setInput(ByteBuffer input)
Устанавливает входные данные для декомпрессии.

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

Позиция предоставленного буфера будет сдвигаться по мере выполнения операций раздувания, до границы буфера. Входной буфер может быть изменён (дополнен) между операциями раздувания; это эквивалентно созданию нового буфера и его установке с помощью этого метода.

Изменение содержимого, позиции или границы входного буфера одновременно с операцией раздувания приведёт к неопределённому поведению, которое может включать неправильные результаты операции или её сбой.

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

setDictionary

public void setDictionary(byte[] dictionary, int off, int len)
Устанавливает предварительно заданный словарь в заданный массив байтов. Должен вызываться, когда inflate() возвращает 0, а needsDictionary() возвращает true, указывая на необходимость предварительно заданного словаря. Метод getAdler() можно использовать для получения значения Adler-32 необходимого словаря.
Параметры:
dictionary - байты данных словаря
off - начальный смещение данных
len - длина данных
См. также:
  • needsDictionary()
  • getAdler()

setDictionary

public void setDictionary(byte[] dictionary)
Устанавливает предварительно заданный словарь в заданный массив байтов. Должен вызываться, когда inflate() возвращает 0, а needsDictionary() возвращает true, указывая на необходимость предварительно заданного словаря. Метод getAdler() можно использовать для получения значения Adler-32 необходимого словаря.
Параметры:
dictionary - байты данных словаря
См. также:
  • needsDictionary()
  • getAdler()

setDictionary

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

Байты в данном байтовом буфере будут полностью использованы этим методом. При возвращении его позиция будет равна его границе.

Параметры:
dictionary - байты данных словаря
С:
11
См. также:
  • 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[] output, int off, int len) throws DataFormatException
Распаковывает байты в указанный буфер. Возвращает фактическое количество распакованных байтов. Значение 0 указывает, что необходимо вызвать needsInput() или needsDictionary(), чтобы определить, требуются ли дополнительные входные данные или предварительно заданный словарь. В последнем случае getAdler() можно использовать для получения значения Adler-32 требуемого словаря.

Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество байтов, потреблённых этой операцией, даже в случае, если возникает исключение DataFormatException.

Количество оставшихся байтов будет уменьшено на количество потреблённых байтов входных данных. Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество потреблённых байтов.

Эти значения байтов, а также общее количество прочитанных байтов и общее количество записанных байтов, будут обновлены даже в случае возникновения исключения DataFormatException для отражения объёма данных, потреблённых и произведённых перед возникновением исключения.

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

inflate

public int inflate(byte[] output) throws DataFormatException
Распаковывает байты в указанный буфер. Возвращает фактическое количество распакованных байтов. Значение 0 указывает, что необходимо вызвать needsInput() или needsDictionary(), чтобы определить, требуются ли дополнительные входные данные или предварительно заданный словарь. В последнем случае getAdler() можно использовать для получения значения Adler-32 требуемого словаря.

Количество оставшихся байтов будет уменьшено на количество потреблённых байтов входных данных. Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество потреблённых байтов.

Эти значения байтов, а также общее количество прочитанных байтов и общее количество записанных байтов, будут обновлены даже в случае возникновения исключения DataFormatException для отражения объёма данных, потреблённых и произведённых перед возникновением исключения.

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

inflate

public int inflate(ByteBuffer output) throws DataFormatException
Распаковывает байты в указанный буфер. Возвращает фактическое количество распакованных байтов. Значение 0 указывает на необходимость вызова needsInput() или needsDictionary(), чтобы определить, требуется ли дополнительный входной данные или предварительно заданный словарь. В последнем случае getAdler() можно использовать для получения значения Adler-32 требуемого словаря.

При успехе позиция заданного output байтового буфера будет сдвинута на количество байтов, произведенных операцией, что равно числу, возвращённому этим методом. Обратите внимание, что позиция output буфера будет сдвинута даже в случае, если будет выброшено исключение DataFormatException.

Количество оставшихся байтов будет уменьшено на количество потреблённых входных байтов. Если метод setInput(ByteBuffer) был вызван для предоставления буфера для ввода, позиция буфера ввода будет сдвинута на количество потреблённых байтов.

Эти значения байтов, а также значения общего количества считанных байтов и общего количества записанных байтов будут обновлены даже в случае, если будет выброшено исключение DataFormatException для отражения количества данных, потреблённых и произведённых до возникновения исключения.

Parameters:
output - буфер для распакованных данных
Returns:
фактическое количество распакованных байтов
Throws:
DataFormatException - если формат сжатых данных недействителен
ReadOnlyBufferException - если заданный буфер вывода только для чтения
Since:
11
See Also:
  • needsInput()
  • needsDictionary()

getAdler

public int getAdler()
Возвращает значение ADLER-32 распакованных данных.
Returns:
значение ADLER-32 распакованных данных

getTotalIn

public int getTotalIn()
Возвращает общее количество сжатых байтов ввода до настоящего момента.

Поскольку количество байтов может быть больше, чем Integer.MAX_VALUE, метод getBytesRead() теперь является предпочтительным способом получения этой информации.

Returns:
общее количество сжатых байтов ввода до настоящего момента

getBytesRead

public long getBytesRead()
Возвращает общее количество сжатых байтов ввода до настоящего момента.
Returns:
общее (неотрицательное) количество сжатых байтов ввода до настоящего момента
Since:
1.5

getTotalOut

public int getTotalOut()
Возвращает общее количество распакованных байтов вывода до настоящего момента.

Поскольку количество байтов может быть больше, чем Integer.MAX_VALUE, метод getBytesWritten() теперь является предпочтительным способом получения этой информации.

Returns:
общее количество распакованных байтов вывода до настоящего момента

getBytesWritten

public long getBytesWritten()
Возвращает общее количество распакованных байтов вывода до настоящего момента.
Returns:
общее (неотрицательное) количество распакованных байтов вывода до настоящего момента
Since:
1.5

reset

public void reset()
Сбрасывает распаковщик, чтобы можно было обработать новый набор входных данных.

end

public void end()
Закрывает распаковщик и отбрасывает любые необработанные входные данные. Этот метод следует вызывать, когда распаковщик больше не используется. После вызова этого метода поведение объекта Inflater не определено.

© 1993, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/zip/Inflater.html

Spec-Zone.ru

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