Class DeflaterOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable
    Direct Known Subclasses:
    GZIPOutputStream, ZipOutputStream

    public class DeflaterOutputStream
    extends java.io.FilterOutputStream
    This is a special FilterOutputStream deflating the bytes that are written through it. It uses the Deflater for deflating. A special thing to be noted is that flush() doesn't flush everything in Sun's JDK, but it does so in jazzlib. This is because Sun's Deflater doesn't have a way to flush() everything, without finishing the stream.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected byte[] buf
      This buffer is used temporarily to retrieve the bytes from the deflater and write them to the underlying output stream.
      protected Deflater def
      The deflater which is used to deflate the stream.
      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      DeflaterOutputStream​(java.io.OutputStream out)
      Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
      DeflaterOutputStream​(java.io.OutputStream out, Deflater defl)
      Creates a new DeflaterOutputStream with the given Deflater and default buffer size.
      DeflaterOutputStream​(java.io.OutputStream out, Deflater defl, int bufsize)
      Creates a new DeflaterOutputStream with the given Deflater and buffer size.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Calls finish () and closes the stream.
      protected void deflate()
      Deflates everything in the def's input buffers.
      void finish()
      Finishes the stream by calling finish() on the deflater.
      void flush()
      Flushes the stream by calling flush() on the deflater and then on the underlying stream.
      void write​(byte[] buf, int off, int len)
      Writes a len bytes from an array to the compressed stream.
      void write​(int bval)
      Writes a single byte to the compressed output stream.
      • 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
    • Field Detail

      • buf

        protected byte[] buf
        This buffer is used temporarily to retrieve the bytes from the deflater and write them to the underlying output stream.
      • def

        protected Deflater def
        The deflater which is used to deflate the stream.
    • Constructor Detail

      • DeflaterOutputStream

        public DeflaterOutputStream​(java.io.OutputStream out)
        Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
        Parameters:
        out - the output stream where deflated output should be written.
      • DeflaterOutputStream

        public DeflaterOutputStream​(java.io.OutputStream out,
                                    Deflater defl)
        Creates a new DeflaterOutputStream with the given Deflater and default buffer size.
        Parameters:
        out - the output stream where deflated output should be written.
        defl - the underlying deflater.
      • DeflaterOutputStream

        public DeflaterOutputStream​(java.io.OutputStream out,
                                    Deflater defl,
                                    int bufsize)
        Creates a new DeflaterOutputStream with the given Deflater and buffer size.
        Parameters:
        out - the output stream where deflated output should be written.
        defl - the underlying deflater.
        bufsize - the buffer size.
        Throws:
        java.lang.IllegalArgumentException - if bufsize isn't positive.
    • Method Detail

      • deflate

        protected void deflate()
                        throws java.io.IOException
        Deflates everything in the def's input buffers. This will call def.deflate() until all bytes from the input buffers are processed.
        Throws:
        java.io.IOException
      • flush

        public void flush()
                   throws java.io.IOException
        Flushes the stream by calling flush() on the deflater and then on the underlying stream. This ensures that all bytes are flushed. This function doesn't work in Sun's JDK, but only in jazzlib.
        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.FilterOutputStream
        Throws:
        java.io.IOException
      • finish

        public void finish()
                    throws java.io.IOException
        Finishes the stream by calling finish() on the deflater. This was the only way to ensure that all bytes are flushed in Sun's JDK.
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Calls finish () and closes the stream.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterOutputStream
        Throws:
        java.io.IOException
      • write

        public void write​(int bval)
                   throws java.io.IOException
        Writes a single byte to the compressed output stream.
        Overrides:
        write in class java.io.FilterOutputStream
        Parameters:
        bval - the byte value.
        Throws:
        java.io.IOException
      • write

        public void write​(byte[] buf,
                          int off,
                          int len)
                   throws java.io.IOException
        Writes a len bytes from an array to the compressed stream.
        Overrides:
        write in class java.io.FilterOutputStream
        Parameters:
        buf - the byte array.
        off - the offset into the byte array where to start.
        len - the number of bytes to write.
        Throws:
        java.io.IOException