DeflatorInputStream и DeflatorOutputStream не восстанавливают исходные данные

Я хочу сжать некоторые данные, поэтому я наткнулся на классы DeflatorInputStream и DeflatorOutputStream. Однако следующий пример показывает, что я не могу восстановить свои исходные данные при использовании этих классов.

Когда я переключаюсь на ZipInputStream и ZipOutputStream, он работает, но поскольку мне самим не нужны zip-файлы, я подумал, что общее сжатие будет лучше. В основном мне интересно понять, почему этот пример не работает.

//Create some "random" data
int bytesLength = 1024;
byte[] bytes = new byte[bytesLength];
for(int i = 0; i < bytesLength; i++) {
     bytes[i] = (byte) (i % 10);
}

//Compress the data, and write it to somewhere (a byte array for this example)
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
DeflaterOutputStream outputStream = new DeflaterOutputStream(arrayOutputStream);
outputStream.write(bytes);

//Read and decompress the data
byte[] readBuffer = new byte[5000];
ByteArrayInputStream arrayInputStream = new ByteArrayInputStream(arrayOutputStream.toByteArray());
DeflaterInputStream inputStream = new DeflaterInputStream(arrayInputStream);
int read = inputStream.read(readBuffer);

//Should hold the original (reconstructed) data
byte[] actuallyRead = Arrays.copyOf(readBuffer, read);

//Results differ - will print false
System.out.println(Arrays.equals(bytes, actuallyRead));

Ответы на вопрос(2)

Ваш ответ на вопрос