Очевидно, GZIPOutputStream
использует Deflater
под капотом, так что вы не пытаетесь сделать что-нибудь безумное.
Одна из возможностей (из этой страницы , которая, вероятно, стоит прочитать) - это создать подкласс GZIPOutputStream
, чтобы вы могли получить доступ к его Deflater
объекту. Что-то более или менее подобное (не проверено):
public class MyGZIPOutputStream extends GZIPOutputStream {
public MyGZIPOutputStream(final OutputStream out) throws IOException {
super(out);
}
public void setDictionary(byte[] b) {
def.setDictionary(b);
}
}
Затем вы можете сделать вызов setDictionary перед использованием MyGZIPOutputStream
для сохранения файла.
Переменная def
является защищенным членом GZIPOutputStream
, поэтому для доступа к ней необходимо создать подклассы.