Spec-Zone.ru › OpenJDK 17

Класс Inflater

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

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

Следующий фрагмент кода демонстрирует тривиальное сжатие и распаковку строки, используя 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, 2021, 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/17/docs/api/java.base/java/util/zip/Inflater.html

Spec-Zone.ru

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