10 Ocak 2017 Salı

Deflater Sınıfı - Veriyi Sıkıştırır

Giriş
Şu satırı dahil ederiz.
import java.util.zip.Deflater;
Sıkıştırılmış veriyi açmak için Inflater Sınıfını kullanırız.

Kullanım
Örnek
Sıkıştırma (compress) için şöyle yaparız. Burada end() metodu çağrılmıyor ama çağrılmalı
Deflater deflater = new Deflater();
deflater.setInput(data);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length);
deflater.finish();
byte[] buffer = new byte[1024];
while (!deflater.finished()) {
  int count = deflater.deflate(buffer);
  outputStream.write(buffer, 0, count);
}
outputStream.close();
byte[] output = outputStream.toByteArray();
Örnek
Şöyle yaparız. Burada end() metodu çağrılıyor ama ByteArrayOutputStream.close() çağrılmıyor
public static byte[] compress(byte[] input) {
  if (input.length == 0) {
    return new byte[0];
  }
  int len = Math.max(input.length / 10, 10);

  Deflater compressor = new Deflater();
  compressor.setLevel(Deflater.BEST_SPEED);
  compressor.setInput(input);
  compressor.finish();
  ByteArrayOutputStream bos = new ByteArrayOutputStream(len);
  byte[] buf = new byte[len];
  while (!compressor.finished()) {
    int count = compressor.deflate(buf);
    bos.write(buf, 0, count);
  }
  compressor.end();
  return bos.toByteArray();
}
constructor
Şöyle yaparız.
int level = Deflater.DEFAULT_COMPRESSION;
Deflater deflater = new Deflater (level);
deflate metodu
Şöyle yaparız.
//Buffer for compressed data to be written
byte[] outBuf = ...;
int size = deflater.deflate(outBuf);
finished metodu
Şöyle yaparız.
ByteArrayOutputStream bos = new ByteArrayOutputStream(...);

byte[] buffer = new byte[1024];
while (!deflater.finished()) {

  int bytesCompressed = deflater.deflate(buffer);
  bos.write(buffer, 0, bytesCompressed);
}
finish metodu
setInputBytes çağrısından sonra yapılır. Tüm sıkıştırılacak verinin verildiğini belirtir. Şöyle yaparız.
deflater.finish();
reset metodu
Şöyle yaparız.
deflater.reset();
setInput metodu - byte []
Şöyle yaparız
byte[] bytes = ...;
deflater.setInput (bytes);
setInput metodu - byte [] + position + len
Şöyle yaparız.
//Buffer for input data
byte[] inBuf = ...;

//Number of bytes in the buffer
int len = ...;

deflater.setInput (inBuf, 0, len);
setStrategy metodu
Şöyle yaparız.
int strategy = Deflater.DEFAULT_STRATEGY;
deflater.setStrategy(strategy);




Hiç yorum yok:

Yorum Gönder