11 Eylül 2022 Pazar

DeflaterOutputStream Sınıfı

Giriş
Şu satırı dahil ederiz
import java.util.zip.DeflaterOutputStream;
constructor
Örnek - Yanlış Kullanım
Şöyle yapmak doğru değil. Çünkü Deflator sınıfı kapatılmıyor.
outputStream = new DeflaterOutputStream(outputStream, new Deflater(), BLOCK_SIZE);
Çözüm şunlardan birisini kullanmak. Burada deflator elle kapatılıyor
outputStream = new DeflaterOutputStream(outputStream, new Deflater(), BLOCK_SIZE) {
  @Override
  public void close() throws IOException {
    try {
      super.close();
    } finally {
      def.end();
    }
  }
};
veya şöyle yapmak. Burada usesDefaultDeflater değişkeni true yapılıyor. Böylece GZIPOutputStream kendisine dışarıdan verilen nesnesi kapatıyor.
public GZIPOutputStream(OutputStream out, int size, boolean syncFlush)
      throws IOException {
  super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true),
        size,
        syncFlush);
  usesDefaultDeflater = true;
  ...
}


Hiç yorum yok:

Yorum Gönder