Класс Inflater
public class Inflater extends Object
Этот класс разжимает последовательности сжатых байтов 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
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Inflater() |
Создаёт новый декомпрессор. |
Inflater |
Создаёт новый декомпрессор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
end() |
Закрывает декомпрессор и отбрасывает любые необработанные входные данные. |
boolean |
finished() |
Возвращает true, если достигнут конец потока сжатых данных. |
int |
getAdler() |
Возвращает значение ADLER-32 разархивированных данных. |
long |
getBytesRead() |
Возвращает общее количество сжатых входных байтов до сих пор. |
long |
getBytesWritten() |
Возвращает общее количество разархивированных выходных байтов до сих пор. |
int |
getRemaining() |
Возвращает общее количество байтов, оставшихся во входном буфере. |
int |
getTotalIn() |
Возвращает общее количество сжатых входных байтов до сих пор. |
int |
getTotalOut() |
Возвращает общее количество разархивированных выходных байтов до сих пор. |
int |
inflate |
Разархивирует байты в указанный буфер. |
int |
inflate |
Разархивирует байты в указанный буфер. |
int |
inflate |
Разархивирует байты в указанный буфер. |
boolean |
needsDictionary() |
Возвращает true, если для разархивирования необходим предопределённый словарь. |
boolean |
needsInput() |
Возвращает true, если в входном буфере нет данных. |
void |
reset() |
Сбрасывает декомпрессор, чтобы можно было обработать новые входные данные. |
void |
setDictionary |
Устанавливает предопределённый словарь в заданный массив байтов. |
void |
setDictionary |
Устанавливает предопределённый словарь в заданный массив байтов. |
void |
setDictionary |
Устанавливает предопределённый словарь в байты заданного буфера. |
void |
setInput |
Устанавливает входные данные для разархивирования. |
void |
setInput |
Устанавливает входные данные для разархивирования. |
void |
setInput |
Устанавливает входные данные для разархивирования. |
Подробное описание конструкторов
Inflater
public Inflater(boolean nowrap)
Примечание: при использовании опции 'nowrap' также необходимо предоставить дополнительный "фиктивный" байт в качестве входных данных. Это необходимо для поддержки определённых оптимизаций в родном ZLIB-библиотеке.
- Параметры:
-
nowrap- если true, то поддерживается совместимость с сжатием GZIP
Inflater
public Inflater()
Подробное описание методов
setInput
public void setInput(byte[] input, int off, int len)
Один из методов setInput() должен быть вызван всякий раз, когда needsInput() возвращает true, указывая на необходимость дополнительных входных данных.
- Параметры:
-
input- байты входных данных -
off- начальный смещение входных данных -
len- длина входных данных - См. также:
setInput
public void setInput(byte[] input)
Один из методов setInput() должен быть вызван всякий раз, когда needsInput() возвращает true, указывая на необходимость дополнительных входных данных.
- Параметры:
-
input- байты входных данных - См. также:
setInput
public void setInput(ByteBuffer input)
Один из методов setInput() должен быть вызван всякий раз, когда needsInput() возвращает true, указывая на необходимость дополнительных входных данных.
Позиция предоставленного буфера будет сдвигаться по мере выполнения операций раздувания, до границы буфера. Входной буфер может быть изменён (дополнен) между операциями раздувания; это эквивалентно созданию нового буфера и его установке с помощью этого метода.
Изменение содержимого, позиции или границы входного буфера одновременно с операцией раздувания приведёт к неопределённому поведению, которое может включать неправильные результаты операции или её сбой.
- Параметры:
-
input- байты входных данных - С:
- 11
- См. также:
setDictionary
public void setDictionary(byte[] dictionary, int off, int len)
- Параметры:
-
dictionary- байты данных словаря -
off- начальный смещение данных -
len- длина данных - См. также:
setDictionary
public void setDictionary(byte[] dictionary)
- Параметры:
-
dictionary- байты данных словаря - См. также:
setDictionary
public void setDictionary(ByteBuffer dictionary)
Байты в данном байтовом буфере будут полностью использованы этим методом. При возвращении его позиция будет равна его границе.
- Параметры:
-
dictionary- байты данных словаря - С:
- 11
- См. также:
getRemaining
public int getRemaining()
- Возвращает:
- общее количество байтов, оставшихся в буфере входных данных
needsInput
public boolean needsInput()
setInput() для предоставления дополнительных входных данных.- Возвращает:
- true, если в буфере входных данных не осталось данных
needsDictionary
public boolean needsDictionary()
- Возвращает:
- true, если для декомпрессии требуется предварительно заданный словарь
- См. также:
finished
public boolean finished()
- Возвращает:
- true, если достигнут конец потока сжатых данных
inflate
public int inflate(byte[] output, int off, int len) throws DataFormatException
Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество байтов, потреблённых этой операцией, даже в случае, если возникает исключение DataFormatException.
Количество оставшихся байтов будет уменьшено на количество потреблённых байтов входных данных. Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество потреблённых байтов.
Эти значения байтов, а также общее количество прочитанных байтов и общее количество записанных байтов, будут обновлены даже в случае возникновения исключения DataFormatException для отражения объёма данных, потреблённых и произведённых перед возникновением исключения.
- Параметры:
-
output- буфер для распакованных данных -
off- начальный смещение данных -
len- максимальное количество распакованных байтов - Возвращает:
- фактическое количество распакованных байтов
- Исключения:
-
DataFormatException- если формат сжатых данных некорректен - См. также:
inflate
public int inflate(byte[] output) throws DataFormatException
Количество оставшихся байтов будет уменьшено на количество потреблённых байтов входных данных. Если для ввода был вызван метод setInput(ByteBuffer), позиция входного буфера будет увеличена на количество потреблённых байтов.
Эти значения байтов, а также общее количество прочитанных байтов и общее количество записанных байтов, будут обновлены даже в случае возникновения исключения DataFormatException для отражения объёма данных, потреблённых и произведённых перед возникновением исключения.
- Параметры:
-
output- буфер для распакованных данных - Возвращает:
- фактическое количество распакованных байтов
- Исключения:
-
DataFormatException- если формат сжатых данных некорректен - См. также:
inflate
public int inflate(ByteBuffer output) throws DataFormatException
При успехе позиция заданного output байтового буфера будет сдвинута на количество байтов, произведенных операцией, что равно числу, возвращённому этим методом. Обратите внимание, что позиция output буфера будет сдвинута даже в случае, если будет выброшено исключение DataFormatException.
Количество оставшихся байтов будет уменьшено на количество потреблённых входных байтов. Если метод setInput(ByteBuffer) был вызван для предоставления буфера для ввода, позиция буфера ввода будет сдвинута на количество потреблённых байтов.
Эти значения байтов, а также значения общего количества считанных байтов и общего количества записанных байтов будут обновлены даже в случае, если будет выброшено исключение DataFormatException для отражения количества данных, потреблённых и произведённых до возникновения исключения.
- Parameters:
-
output- буфер для распакованных данных - Returns:
- фактическое количество распакованных байтов
- Throws:
-
DataFormatException- если формат сжатых данных недействителен -
ReadOnlyBufferException- если заданный буфер вывода только для чтения - Since:
- 11
- See Also:
getAdler
public int getAdler()
- 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()
© 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