Bazı verileri sıkıştırmak istiyorum, bu nedenle DeflatorInputStream & DeflatorOutputStream sınıflarına rastladım. Ancak, aşağıdaki örnek, bu sınıfları kullanırken orijinal verilerimi yeniden oluşturamayacağımı gösterir.DeflatorInputStream ve DeflatorOutputStream, orijinal verileri yeniden oluşturmuyor
ZipInputStream ve ZipOutputStream'e geçtiğimde işe yaramıyor, ancak zip dosyalarına gerek duymadığımdan, genel bir sıkıştırmanın daha iyi olacağını düşündüm. Temel olarak bu örneğin neden çalışmadığını anlamak istiyorum.
//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));