Class DeflaterOutputStream

All Implemented Interfaces:
Closeable, Flushable, AutoCloseable
Direct Known Subclasses:
GZIPOutputStream, ZipOutputStream

public class DeflaterOutputStream extends 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[]
    This buffer is used temporarily to retrieve the bytes from the deflater and write them to the underlying output stream.
    protected Deflater
    The deflater which is used to deflate the stream.

    Fields inherited from class FilterOutputStream

    out
  • Constructor Summary

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

    Modifier and Type
    Method
    Description
    void
    Calls finish () and closes the stream.
    protected void
    Deflates everything in the def's input buffers.
    void
    Finishes the stream by calling finish() on the deflater.
    void
    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 FilterOutputStream

    write

    Methods inherited from class OutputStream

    nullOutputStream

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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 Details

    • DeflaterOutputStream

      public DeflaterOutputStream(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(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(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:
      IllegalArgumentException - if bufsize isn't positive.
  • Method Details

    • deflate

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

      public void flush() throws 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 Flushable
      Overrides:
      flush in class FilterOutputStream
      Throws:
      IOException
    • finish

      public void finish() throws 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:
      IOException
    • close

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

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

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