Spec-Zone.ru › OpenJDK 25

Класс Deflater

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

Если не указано иное, передача аргумента null методу этого класса приведет к выбросу исключения NullPointerException.

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

Чтобы освободить ресурсы, используемые Deflater, приложение должно закрыть его, вызвав метод end() или close().

Примечание к API:
Этот класс реализует интерфейс AutoCloseable, чтобы упростить его использование в операторе try-with-resources. Метод close() просто вызывает end().

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


// Encode a String into bytes
String inputString = "blahblahblah\u20AC\u20AC";
byte[] input = inputString.getBytes(StandardCharsets.UTF_8);

// Compress the bytes
ByteArrayOutputStream compressedBaos = new ByteArrayOutputStream();
try (Deflater compressor = new Deflater()) {
    compressor.setInput(input);
    // Let the compressor know that the complete input
    // has been made available
    compressor.finish();
    // Keep compressing the input till the compressor
    // is finished compressing
    while (!compressor.finished()) {
        // Use some reasonable size for the temporary buffer
        // based on the data being compressed
        byte[] tmpBuffer = new byte[100];
        int numCompressed = compressor.deflate(tmpBuffer);
        // Copy over the compressed bytes from the temporary
        // buffer into the final byte array
        compressedBaos.write(tmpBuffer, 0, numCompressed);
    }
}

// Decompress the bytes
ByteArrayOutputStream decompressedBaos = new ByteArrayOutputStream();
try (Inflater decompressor = new Inflater()) {
    byte[] compressed = compressedBaos.toByteArray();
    decompressor.setInput(compressed, 0, compressed.length);
    while (!decompressor.finished()) {
        // Use some reasonable size for the temporary buffer,
        // based on the data being decompressed; in this example,
        // we use a small buffer size
        byte[] tmpBuffer = new byte[100];
        int numDecompressed = 0;
        try {
            numDecompressed = decompressor.inflate(tmpBuffer);
        } catch (DataFormatException dfe) {
            // Handle the exception suitably, in this example
            // we just rethrow it
            throw new RuntimeException(dfe);
        }
        // Copy over the decompressed bytes from the temporary
        // buffer into the final byte array
        decompressedBaos.write(tmpBuffer, 0, numDecompressed);
    }
}
// Decode the bytes into a String
String outputString = decompressedBaos.toString(StandardCharsets.UTF_8);

Начиная с версии:
1.1
См. также:
  • Inflater

Краткое описание полей

Модификатор и тип Поле Описание
static final int BEST_COMPRESSION
Уровень сжатия для наилучшего сжатия.
static final int BEST_SPEED
Уровень сжатия для максимально быстрого сжатия.
static final int DEFAULT_COMPRESSION
Уровень сжатия по умолчанию.
static final int DEFAULT_STRATEGY
Стратегия сжатия по умолчанию.
static final int DEFLATED
Метод сжатия для алгоритма deflate (единственный поддерживаемый в настоящее время).
static final int FILTERED
Стратегия сжатия, наиболее подходящая для данных, состоящих преимущественно из небольших значений со случайным распределением.
static final int FULL_FLUSH
Режим сброса данных сжатия, используемый для сброса всех ожидающих выходных данных и сброса состояния дефлятора.
static final int HUFFMAN_ONLY
Стратегия сжатия только для кодирования Хаффмана.
static final int NO_COMPRESSION
Уровень сжатия без сжатия.
static final int NO_FLUSH
Режим сброса данных сжатия, используемый для достижения наилучшего результата сжатия.
static final int SYNC_FLUSH
Режим сброса данных сжатия, используемый для сброса всех ожидающих выходных данных; может ухудшить сжатие для некоторых алгоритмов сжатия.

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

Конструктор Описание
Deflater()
Создает новый компрессор с уровнем сжатия по умолчанию.
Deflater(int level)
Создает новый компрессор с указанным уровнем сжатия.
Deflater(int level, boolean nowrap)
Создает новый компрессор с указанным уровнем сжатия.

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

Модификатор и тип Метод Описание
void close()
Закрывает и освобождает ресурсы, используемые этим Deflater, и удаляет все необработанные входные данные.
int deflate(byte[] output)
Сжимает входные данные и заполняет указанный буфер сжатыми данными.
int deflate(byte[] output, int off, int len)
Сжимает входные данные и заполняет указанный буфер сжатыми данными.
int deflate(byte[] output, int off, int len, int flush)
Сжимает входные данные и заполняет указанный буфер сжатыми данными.
int deflate(ByteBuffer output)
Сжимает входные данные и заполняет указанный буфер сжатыми данными.
int deflate(ByteBuffer output, int flush)
Сжимает входные данные и заполняет указанный буфер сжатыми данными.
void end()
Закрывает и освобождает ресурсы, используемые этим Deflater, и удаляет все необработанные входные данные.
void finish()
При вызове указывает, что сжатие должно завершиться с текущим содержимым входного буфера.
boolean finished()
Возвращает true, если достигнут конец потока выходных сжатых данных.
int getAdler()
Возвращает значение ADLER-32 для несжатых данных.
long getBytesRead()
Возвращает общее количество байтов несжатых входных данных на данный момент.
long getBytesWritten()
Возвращает общее количество байтов сжатых выходных данных на данный момент.
int getTotalIn()
Устарел.
Вместо него используйте getBytesRead()
int getTotalOut()
Устарел.
Вместо него используйте getBytesWritten()
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)
Задает входные данные для сжатия.
void setLevel(int level)
Задает указанный уровень сжатия.
void setStrategy(int strategy)
Задает указанную стратегию сжатия.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

DEFLATED

public static final int DEFLATED
Метод сжатия для алгоритма deflate (единственный поддерживаемый в настоящее время).
См. также:
  • Значения констант полей

NO_COMPRESSION

public static final int NO_COMPRESSION
Уровень сжатия, при котором сжатие не выполняется.
См. также:
  • Значения констант полей

BEST_SPEED

public static final int BEST_SPEED
Уровень сжатия для максимально быстрого сжатия.
См. также:
  • Значения констант полей

BEST_COMPRESSION

public static final int BEST_COMPRESSION
Уровень сжатия для наилучшего сжатия.
См. также:
  • Значения констант полей

DEFAULT_COMPRESSION

public static final int DEFAULT_COMPRESSION
Уровень сжатия по умолчанию.
См. также:
  • Значения констант полей

FILTERED

public static final int FILTERED
Стратегия сжатия, наиболее подходящая для данных, состоящих преимущественно из небольших значений со случайным распределением. Увеличивает долю кодирования Хаффмана и уменьшает сопоставление строк.
См. также:
  • Значения констант полей

HUFFMAN_ONLY

public static final int HUFFMAN_ONLY
Стратегия сжатия, использующая только кодирование Хаффмана.
См. также:
  • Значения констант полей

DEFAULT_STRATEGY

public static final int DEFAULT_STRATEGY
Стратегия сжатия по умолчанию.
См. также:
  • Значения констант полей

NO_FLUSH

public static final int NO_FLUSH
Режим сброса при сжатии, обеспечивающий наилучший результат сжатия.
Начиная с:
1.7
См. также:
  • deflate(byte[], int, int, int)
  • Значения констант полей

SYNC_FLUSH

public static final int SYNC_FLUSH
Режим сброса при сжатии, используемый для сброса всех ожидающих выходных данных; может ухудшить сжатие для некоторых алгоритмов сжатия.
Начиная с:
1.7
См. также:
  • deflate(byte[], int, int, int)
  • Значения констант полей

FULL_FLUSH

public static final int FULL_FLUSH
Режим сброса при сжатии, используемый для сброса всех ожидающих выходных данных и сброса состояния компрессора. Слишком частое использование этого режима может серьёзно ухудшить сжатие.
Начиная с:
1.7
См. также:
  • deflate(byte[], int, int, int)
  • Значения констант полей

Подробное описание конструкторов

Deflater

public Deflater(int level, boolean nowrap)
Создаёт новый компрессор с указанным уровнем сжатия. Если значение 'nowrap' равно true, заголовок ZLIB и поля контрольной суммы не используются, чтобы обеспечить поддержку формата сжатия, используемого в GZIP и PKZIP.
Параметры:
level — уровень сжатия (0–9)
nowrap — если true, используется сжатие, совместимое с GZIP

Deflater

public Deflater(int level)
Создаёт новый компрессор с указанным уровнем сжатия. Сжатые данные будут создаваться в формате ZLIB.
Параметры:
level — уровень сжатия (0–9)

Deflater

public Deflater()
Создаёт новый компрессор с уровнем сжатия по умолчанию. Сжатые данные будут создаваться в формате ZLIB.

Подробное описание методов

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)
Задаёт предустановленный словарь для сжатия. Предустановленный словарь используется, когда буфер истории можно определить заранее. После последующей распаковки данных с помощью Inflater.inflate() можно вызвать Inflater.getAdler(), чтобы получить значение Adler-32 словаря, необходимого для распаковки.
Параметры:
dictionary — байты данных словаря
off — начальное смещение данных
len — длина данных
Исключения:
IllegalStateException — если Deflater закрыт
См. также:
  • Inflater.inflate(byte[], int, int)
  • Inflater.getAdler()

setDictionary

public void setDictionary(byte[] dictionary)
Задаёт предустановленный словарь для сжатия. Предустановленный словарь используется, когда буфер истории можно определить заранее. После последующей распаковки данных с помощью Inflater.inflate() можно вызвать Inflater.getAdler(), чтобы получить значение Adler-32 словаря, необходимого для распаковки.
Параметры:
dictionary — байты данных словаря
Исключения:
IllegalStateException — если Deflater закрыт
См. также:
  • Inflater.inflate(byte[], int, int)
  • Inflater.getAdler()

setDictionary

public void setDictionary(ByteBuffer dictionary)
Задаёт предустановленный словарь для сжатия. Предустановленный словарь используется, когда буфер истории можно определить заранее. После последующей распаковки данных с помощью Inflater.inflate() можно вызвать Inflater.getAdler(), чтобы получить значение Adler-32 словаря, необходимого для распаковки.

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

Параметры:
dictionary — байты данных словаря
Исключения:
IllegalStateException — если Deflater закрыт
Начиная с:
11
См. также:
  • Inflater.inflate(byte[], int, int)
  • Inflater.getAdler()

setStrategy

public void setStrategy(int strategy)
Задаёт стратегию сжатия указанным значением.

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

Параметры:
strategy — новая стратегия сжатия
Исключения:
IllegalArgumentException — если стратегия сжатия недопустима

setLevel

public void setLevel(int level)
Задаёт уровень сжатия указанным значением.

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

Параметры:
level — новый уровень сжатия (0–9)
Исключения:
IllegalArgumentException — если уровень сжатия недопустим

needsInput

public boolean needsInput()
Возвращает true, если во входном буфере не осталось данных. Это можно использовать, чтобы определить, следует ли вызвать один из методов setInput() для предоставления дополнительных входных данных.
Возвращает:
true, если буфер входных данных пуст и для предоставления дополнительных данных следует вызвать setInput()

finish

public void finish()
При вызове указывает, что сжатие должно завершиться с текущим содержимым входного буфера.

finished

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

deflate

public int deflate(byte[] output, int off, int len)
Сжимает входные данные и заполняет указанный буфер сжатыми данными. Возвращает фактическое количество байтов сжатых данных. Возвращаемое значение 0 указывает на то, что следует вызвать needsInput, чтобы определить, требуются ли дополнительные входные данные.

Этот метод использует NO_FLUSH в качестве режима сброса при сжатии. Вызов этого метода в форме deflater.deflate(b, off, len) даёт тот же результат, что и вызов deflater.deflate(b, off, len, Deflater.NO_FLUSH).

Параметры:
output — буфер для сжатых данных
off — начальное смещение данных
len — максимальное количество байтов сжатых данных
Возвращает:
фактическое количество байтов сжатых данных, записанных в выходной буфер
Исключения:
IllegalStateException — если Deflater закрыт

deflate

public int deflate(byte[] output)
Сжимает входные данные и заполняет указанный буфер сжатыми данными. Возвращает фактическое количество байтов сжатых данных. Возвращаемое значение 0 указывает на то, что следует вызвать needsInput, чтобы определить, требуются ли дополнительные входные данные.

Этот метод использует NO_FLUSH в качестве режима сброса при сжатии. Вызов этого метода в форме deflater.deflate(b) даёт тот же результат, что и вызов deflater.deflate(b, 0, b.length, Deflater.NO_FLUSH).

Параметры:
output — буфер для сжатых данных
Возвращает:
фактическое количество байтов сжатых данных, записанных в выходной буфер
Исключения:
IllegalStateException — если Deflater закрыт

deflate

public int deflate(ByteBuffer output)
Сжимает входные данные и заполняет указанный буфер сжатыми данными. Возвращает фактическое количество байтов сжатых данных. Возвращаемое значение 0 указывает на то, что следует вызвать needsInput, чтобы определить, требуются ли дополнительные входные данные.

Этот метод использует NO_FLUSH в качестве режима сброса при сжатии. Вызов этого метода в форме deflater.deflate(output) даёт тот же результат, что и вызов deflater.deflate(output, Deflater.NO_FLUSH).

Параметры:
output — буфер для сжатых данных
Возвращает:
фактическое количество байтов сжатых данных, записанных в выходной буфер
Исключения:
ReadOnlyBufferException — если заданный выходной буфер доступен только для чтения
IllegalStateException — если Deflater закрыт
Начиная с:
11

deflate

public int deflate(byte[] output, int off, int len, int flush)
Сжимает входные данные и заполняет указанный буфер сжатыми данными. Возвращает фактическое количество сжатых байтов данных.

Режим сброса при сжатии — один из следующих трёх режимов:

  • NO_FLUSH: позволяет компрессору самостоятельно определить, сколько данных накопить перед созданием выходных данных, чтобы добиться наилучшего сжатия (рекомендуется для обычных сценариев использования). Возвращаемое значение 0 в этом режиме сброса указывает на то, что следует вызвать needsInput(), чтобы определить, требуются ли дополнительные входные данные.
  • SYNC_FLUSH: все ожидающие выходные данные компрессора сбрасываются в указанный выходной буфер, чтобы декомпрессор, обрабатывающий сжатые данные, мог получить все доступные на данный момент входные данные (в частности, после этого вызова needsInput() возвращает true, если предоставлено достаточно места для выходных данных). Сброс с помощью SYNC_FLUSH может ухудшить сжатие для некоторых алгоритмов сжатия, поэтому его следует использовать только при необходимости.
  • FULL_FLUSH: все ожидающие выходные данные сбрасываются, как и при использовании SYNC_FLUSH. Состояние сжатия сбрасывается, чтобы декомпрессор, обрабатывающий сжатые выходные данные, мог начать работу с этой точки, если предыдущие сжатые данные были повреждены или требуется произвольный доступ. Слишком частое использование FULL_FLUSH может серьёзно ухудшить сжатие.

В случае использования FULL_FLUSH или SYNC_FLUSH, если возвращаемое значение равно len, в выходном буфере b доступное пространство, этот метод следует вызвать повторно с тем же параметром flush и большим объёмом выходного пространства. Убедитесь, что значение len больше 6, чтобы маркер сброса (5 байтов) не записывался повторно в выходной буфер при каждом вызове этого метода.

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

Параметры:
output — буфер для сжатых данных
off — начальное смещение данных
len — максимальное количество байтов сжатых данных
flush — режим сброса при сжатии
Возвращает:
фактическое количество байтов сжатых данных, записанных в выходной буфер
Исключения:
IllegalArgumentException — если режим сброса недопустим
IllegalStateException — если Deflater закрыт
Начиная с:
1.7

deflate

public int deflate(ByteBuffer output, int flush)
Сжимает входные данные и заполняет указанный буфер сжатыми данными. Возвращает фактическое количество сжатых байтов данных.

Режим сброса при сжатии — один из следующих трёх режимов:

  • NO_FLUSH: позволяет компрессору самостоятельно определить, сколько данных накопить перед созданием выходных данных, чтобы добиться наилучшего сжатия (рекомендуется для обычных сценариев использования). Возвращаемое значение 0 в этом режиме сброса указывает на то, что следует вызвать needsInput(), чтобы определить, требуются ли дополнительные входные данные.
  • SYNC_FLUSH: все ожидающие выходные данные компрессора сбрасываются в указанный выходной буфер, чтобы декомпрессор, обрабатывающий сжатые данные, мог получить все доступные на данный момент входные данные (в частности, после этого вызова needsInput() возвращает true, если предоставлено достаточно места для выходных данных). Сброс с помощью SYNC_FLUSH может ухудшить сжатие для некоторых алгоритмов сжатия, поэтому его следует использовать только при необходимости.
  • FULL_FLUSH: все ожидающие выходные данные сбрасываются, как и при использовании SYNC_FLUSH. Состояние сжатия сбрасывается, чтобы декомпрессор, обрабатывающий сжатые выходные данные, мог начать работу с этой точки, если предыдущие сжатые данные были повреждены или требуется произвольный доступ. Слишком частое использование FULL_FLUSH может серьёзно ухудшить сжатие.

В случае использования FULL_FLUSH или SYNC_FLUSH, если возвращаемое значение равно оставшемуся пространству буфера, этот метод следует вызвать повторно с тем же параметром flush и большим объёмом выходного пространства. Убедитесь, что в буфере осталось не менее 6 байтов, чтобы маркер сброса (5 байтов) не записывался повторно в выходной буфер при каждом вызове этого метода.

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

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

Параметры:
output — буфер для сжатых данных
flush — режим сброса при сжатии
Возвращает:
фактическое количество байтов сжатых данных, записанных в выходной буфер
Исключения:
IllegalArgumentException — если режим сброса недопустим
ReadOnlyBufferException — если заданный выходной буфер доступен только для чтения
IllegalStateException — если Deflater закрыт
Начиная с:
11

getAdler

public int getAdler()
Возвращает значение ADLER-32 несжатых данных.
Возвращает:
значение ADLER-32 несжатых данных
Исключения:
IllegalStateException — если Deflater закрыт

getTotalIn

@Deprecated(since="23") public int getTotalIn()
Устарело.
Вместо этого используйте getBytesRead()
Возвращает общее количество обработанных на данный момент несжатых байтов.
Требования к реализации:
Этот метод возвращает значение, эквивалентное (int) getBytesRead(), поэтому не может возвращать правильное значение, если оно превышает Integer.MAX_VALUE.
Возвращает:
общее количество обработанных на данный момент несжатых байтов
Исключения:
IllegalStateException — если Deflater закрыт

getBytesRead

public long getBytesRead()
Возвращает общее количество обработанных на данный момент несжатых байтов.
Возвращает:
общее (неотрицательное) количество обработанных на данный момент несжатых байтов
Исключения:
IllegalStateException — если Deflater закрыт
Начиная с:
1.5

getTotalOut

@Deprecated(since="23") public int getTotalOut()
Устарело.
Вместо этого используйте getBytesWritten()
Возвращает общее количество выведенных на данный момент сжатых байтов.
Требования к реализации:
Этот метод возвращает значение, эквивалентное (int) getBytesWritten(), поэтому не может возвращать правильное значение, если оно превышает Integer.MAX_VALUE.
Возвращает:
общее количество выведенных на данный момент сжатых байтов
Исключения:
IllegalStateException — если Deflater закрыт

getBytesWritten

public long getBytesWritten()
Возвращает общее количество выведенных на данный момент сжатых байтов.
Возвращает:
общее (неотрицательное) количество выведенных на данный момент сжатых байтов
Исключения:
IllegalStateException — если Deflater закрыт
Начиная с:
1.5

reset

public void reset()
Сбрасывает состояние компрессора, чтобы можно было обработать новый набор входных данных. Текущие настройки уровня и стратегии сжатия сохраняются.
Исключения:
IllegalStateException — если Deflater закрыт

end

public void end()
Закрывает этот объект Deflater, освобождает удерживаемые им ресурсы и отбрасывает все необработанные входные данные.

Если Deflater уже закрыт, вызов этого метода не оказывает никакого эффекта.

Требования к реализации:
Подклассы должны переопределять этот метод для очистки ресурсов, полученных подклассом.
См. также:
  • close()

close

public void close()
Закрывает этот объект Deflater, освобождает удерживаемые им ресурсы и отбрасывает все необработанные входные данные.
Определено в:
close в интерфейсе AutoCloseable
Требования к реализации:
Этот метод вызывает метод end().
Начиная с:
25

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/util/zip/Deflater.html

Spec-Zone.ru

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