Класс Inflater
public class Inflater extends Object
Этот класс распаковывает последовательности сжатых байтов 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
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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, 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