# Class GZIPOutputStream

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.util.zip.DeflaterOutputStream
java.util.zip.GZIPOutputStream

All Implemented Interfaces:
  `Closeable, Flushable, AutoCloseable`

public class GZIPOutputStream extends DeflaterOutputStream
This class implements a stream filter for writing compressed data in the GZIP file format.

Unless otherwise noted, passing a `null` argument to a constructor or method in this class will cause a `NullPointerException` to be thrown.

Since:
  1.1

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected CRC32`
  `crc`
  CRC-32 of uncompressed data.

  ### Fields declared in class DeflaterOutputStream

  `buf, def`
  Modifier and Type
  Field
  Description
  `protected byte[]`
  `buf`
  Output buffer for writing compressed data.
  `protected Deflater`
  `def`
  Compressor for this stream.

  ### Fields declared in class FilterOutputStream

  `out`
  Modifier and Type
  Field
  Description
  `protected OutputStream`
  `out`
  The underlying output stream to be filtered.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GZIPOutputStream(OutputStream out)`
  Creates a new output stream with a default buffer size.
  `GZIPOutputStream(OutputStream out, boolean syncFlush)`
  Creates a new output stream with a default buffer size and the specified flush mode.
  `GZIPOutputStream(OutputStream out, int size)`
  Creates a new output stream with the specified buffer size.
  `GZIPOutputStream(OutputStream out, int size, boolean syncFlush)`
  Creates a new output stream with the specified buffer size and flush mode.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `finish()`
  Finishes writing compressed data to the output stream without closing the underlying stream.
  `void`
  `write(byte[] buf, int off, int len)`
  Writes array of bytes to the compressed output stream.

  ### Methods declared in class DeflaterOutputStream

  `close, deflate, flush, write`
  Modifier and Type
  Method
  Description
  `void`
  `close()`
  Writes remaining compressed data to the output stream and closes the underlying stream.
  `protected void`
  `deflate()`
  Writes next block of compressed data to the output stream.
  `void`
  `flush()`
  Flushes the compressed output stream.
  `void`
  `write(int b)`
  Writes a byte to the compressed output stream.

  ### Methods declared in class FilterOutputStream

  `write`
  Modifier and Type
  Method
  Description
  `void`
  `write(byte[] b)`
  Writes `b.length` bytes to this output stream.

  ### Methods declared in class OutputStream

  `nullOutputStream`
  Modifier and Type
  Method
  Description
  `static OutputStream`
  `nullOutputStream()`
  Returns a new `OutputStream` which discards all bytes.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### crc

    protected CRC32 crc
    CRC-32 of uncompressed data.

- ## Constructor Details

  - ### GZIPOutputStream

    public GZIPOutputStream(OutputStream out, int size) throws IOException
    Creates a new output stream with the specified buffer size.

    The new output stream instance is created as if by invoking the 3-argument constructor GZIPOutputStream(out, size, false).

    Parameters:
      `out` - the output stream
      `size` - the output buffer size
    Throws:
      `IOException` - If an I/O error has occurred.
      `IllegalArgumentException` - if `size <= 0`

  - ### GZIPOutputStream

    public GZIPOutputStream(OutputStream out, int size, boolean syncFlush) throws IOException
    Creates a new output stream with the specified buffer size and flush mode.
    Parameters:
      `out` - the output stream
      `size` - the output buffer size
      `syncFlush` - if `true` invocation of the inherited `flush()` method of this instance flushes the compressor with flush mode `Deflater.SYNC_FLUSH` before flushing the output stream, otherwise only flushes the output stream
    Throws:
      `IOException` - If an I/O error has occurred.
      `IllegalArgumentException` - if `size <= 0`
    Since:
      1.7

  - ### GZIPOutputStream

    public GZIPOutputStream(OutputStream out) throws IOException
    Creates a new output stream with a default buffer size.

    The new output stream instance is created as if by invoking the 2-argument constructor GZIPOutputStream(out, false).

    Parameters:
      `out` - the output stream
    Throws:
      `IOException` - If an I/O error has occurred.

  - ### GZIPOutputStream

    public GZIPOutputStream(OutputStream out, boolean syncFlush) throws IOException
    Creates a new output stream with a default buffer size and the specified flush mode.
    Parameters:
      `out` - the output stream
      `syncFlush` - if `true` invocation of the inherited `flush()` method of this instance flushes the compressor with flush mode `Deflater.SYNC_FLUSH` before flushing the output stream, otherwise only flushes the output stream
    Throws:
      `IOException` - If an I/O error has occurred.
    Since:
      1.7

- ## Method Details

  - ### write

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

  - ### finish

    public void finish() throws 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 `DeflaterOutputStream`
    Throws:
      `IOException` - if an I/O error has occurred