Я бы не предположил, что Zlib и Inflater / deflater используют один и тот же протокол данных для отправки данных. Они могут использовать одно и то же базовое сжатие, но я подозреваю, что Zlib ожидает, что поток будет содержать информацию для собственных нужд, а не только для необработанных данных.
Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION);
deflater.setStrategy(Deflater.DEFAULT_STRATEGY);
byte[] compressed = new byte[10];
deflater.setInput(new byte[]{1});
deflater.finish();
int bytesCompressed = deflater.deflate(compressed);
System.out.println("bytesCompressed=" + bytesCompressed + " " + Arrays.toString(compressed));
Inflater inflater = new Inflater();
inflater.setInput(compressed, 0, bytesCompressed);
byte[] decompressed = new byte[2];
int byteDecompressed = inflater.inflate(decompressed);
System.out.println("bytesInflated=" + byteDecompressed + " " + Arrays.toString(decompressed));
печать
bytesCompressed=9 [120, -38, 99, 4, 0, 0, 2, 0, 2, 0]
bytesInflated=1 [1, 0]