Class ReusableGzipOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    public class ReusableGzipOutputStream
    extends java.util.zip.DeflaterOutputStream
    This class implements a stream filter for writing compressed data in the GZIP file format. It's an adoption of GZIPOutputStream but with a notable difference regarding re-usability:
    • Expose reset() to reset CRC32 and the deflater
    • Don't write the GZIP header upon construction but expose writeHeader()
    • Field Summary

      • Fields inherited from class java.util.zip.DeflaterOutputStream

        buf, def
      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      ReusableGzipOutputStream​(java.io.ByteArrayOutputStream out)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void finish()
      Finishes writing compressed data to the output stream without closing the underlying stream.
      void reset()  
      byte[] toByteArray()  
      void write​(byte[] buf, int off, int len)
      Writes array of bytes to the compressed output stream.
      void writeHeader()  
      • Methods inherited from class java.util.zip.DeflaterOutputStream

        close, deflate, flush, write
      • Methods inherited from class java.io.FilterOutputStream

        write
      • Methods inherited from class java.io.OutputStream

        nullOutputStream
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ReusableGzipOutputStream

        public ReusableGzipOutputStream​(java.io.ByteArrayOutputStream out)
    • Method Detail

      • toByteArray

        public byte[] toByteArray()
      • write

        public void write​(byte[] buf,
                          int off,
                          int len)
                   throws java.io.IOException
        Writes array of bytes to the compressed output stream. This method will block until all the bytes are written.
        Overrides:
        write in class java.util.zip.DeflaterOutputStream
        Parameters:
        buf - the data to be written
        off - the start offset of the data
        len - the length of the data
        Throws:
        java.io.IOException - If an I/O error has occurred.
      • finish

        public void finish()
                    throws java.io.IOException
        Finishes writing compressed data to the output stream without closing the underlying stream. Use this method when applying multiple filters in succession to the same output stream.
        Overrides:
        finish in class java.util.zip.DeflaterOutputStream
        Throws:
        java.io.IOException - if an I/O error has occurred
      • writeHeader

        public void writeHeader()
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • reset

        public void reset()