## org.apache.hadoop.io.compress.zlib
Class ZlibCompressor

    java.lang.Object
      org.apache.hadoop.io.compress.zlib.ZlibCompressor

All Implemented Interfaces:
  Compressor

    public class ZlibCompressor

extends Object
implements Compressor

A `Compressor` based on the popular zlib compression algorithm. http://www.zlib.net/

Nested Class Summary
`static class` `ZlibCompressor.CompressionHeader` The type of header for compressed data.
`static class` `ZlibCompressor.CompressionLevel` The compression level for zlib library.
`static class` `ZlibCompressor.CompressionStrategy` The compression level for zlib library.

Constructor Summary
`ZlibCompressor()` Creates a new compressor with the default compression level.
`ZlibCompressor(Configuration conf)` Creates a new compressor, taking settings from the configuration.
`ZlibCompressor(ZlibCompressor.CompressionLevel level, ZlibCompressor.CompressionStrategy strategy, ZlibCompressor.CompressionHeader header, int directBufferSize)` Creates a new compressor using the specified compression level.

Method Summary
`int` `compress(byte[] b, int off, int len)` Fills specified buffer with compressed data.
`protected void` `construct(ZlibCompressor.CompressionLevel level, ZlibCompressor.CompressionStrategy strategy, ZlibCompressor.CompressionHeader header, int directBufferSize)`
`void` `end()` Closes the compressor and discards any unprocessed input.
`void` `finish()` When called, indicates that compression should end with the current contents of the input buffer.
`boolean` `finished()` Returns true if the end of the compressed data output stream has been reached.
`long` `getBytesRead()` Returns the total number of uncompressed bytes input so far.
`long` `getBytesWritten()` Returns the total number of compressed bytes output so far.
`boolean` `needsInput()` Returns true if the input data buffer is empty and #setInput() should be called to provide more input.
`void` `reinit(Configuration conf)` Prepare the compressor to be used in a new stream with settings defined in the given Configuration.
`void` `reset()` Resets compressor so that a new set of input data can be processed.
`void` `setDictionary(byte[] b, int off, int len)` Sets preset dictionary for compression.
`void` `setInput(byte[] b, int off, int len)` Sets input data for compression.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ZlibCompressor

    public ZlibCompressor()

  Creates a new compressor with the default compression level. Compressed data will be generated in ZLIB format.

### ZlibCompressor

    public ZlibCompressor(Configuration conf)

  Creates a new compressor, taking settings from the configuration.

### ZlibCompressor

    public ZlibCompressor(ZlibCompressor.CompressionLevel level,
                          ZlibCompressor.CompressionStrategy strategy,
                          ZlibCompressor.CompressionHeader header,
                          int directBufferSize)

  Creates a new compressor using the specified compression level. Compressed data will be generated in ZLIB format.

  Parameters:
    `level` - Compression level #CompressionLevel
    `strategy` - Compression strategy #CompressionStrategy
    `header` - Compression header #CompressionHeader
    `directBufferSize` - Size of the direct buffer to be used.

Method Detail

### construct

    protected final void construct(ZlibCompressor.CompressionLevel level,
                                   ZlibCompressor.CompressionStrategy strategy,
                                   ZlibCompressor.CompressionHeader header,
                                   int directBufferSize)

### reinit

    public void reinit(Configuration conf)

  Prepare the compressor to be used in a new stream with settings defined in the given Configuration. It will reset the compressor's compression level and compression strategy.

  Specified by:
    `reinit` in interface `Compressor`
  Parameters:
    `conf` - Configuration storing new settings

### setInput

    public void setInput(byte[] b,
                         int off,
                         int len)

  Description copied from interface: `Compressor`
  Sets input data for compression. This should be called whenever #needsInput() returns `true` indicating that more input data is required.

  Specified by:
    `setInput` in interface `Compressor`
  Parameters:
    `b` - Input data
    `off` - Start offset
    `len` - Length

### setDictionary

    public void setDictionary(byte[] b,
                              int off,
                              int len)

  Description copied from interface: `Compressor`
  Sets preset dictionary for compression. A preset dictionary is used when the history buffer can be predetermined.

  Specified by:
    `setDictionary` in interface `Compressor`
  Parameters:
    `b` - Dictionary data bytes
    `off` - Start offset
    `len` - Length

### needsInput

    public boolean needsInput()

  Description copied from interface: `Compressor`
  Returns true if the input data buffer is empty and #setInput() should be called to provide more input.

  Specified by:
    `needsInput` in interface `Compressor`
  Returns:
    `true` if the input data buffer is empty and #setInput() should be called in order to provide more input.

### finish

    public void finish()

  Description copied from interface: `Compressor`
  When called, indicates that compression should end with the current contents of the input buffer.

  Specified by:
    `finish` in interface `Compressor`

### finished

    public boolean finished()

  Description copied from interface: `Compressor`
  Returns true if the end of the compressed data output stream has been reached.

  Specified by:
    `finished` in interface `Compressor`
  Returns:
    `true` if the end of the compressed data output stream has been reached.

### compress

    public int compress(byte[] b,
                        int off,
                        int len)
                 throws IOException

  Description copied from interface: `Compressor`
  Fills specified buffer with compressed data. Returns actual number of bytes of compressed data. A return value of 0 indicates that needsInput() should be called in order to determine if more input data is required.

  Specified by:
    `compress` in interface `Compressor`
  Parameters:
    `b` - Buffer for the compressed data
    `off` - Start offset of the data
    `len` - Size of the buffer
  Returns:
    The actual number of bytes of compressed data.
  Throws:
    `IOException`

### getBytesWritten

    public long getBytesWritten()

  Returns the total number of compressed bytes output so far.

  Specified by:
    `getBytesWritten` in interface `Compressor`
  Returns:
    the total (non-negative) number of compressed bytes output so far

### getBytesRead

    public long getBytesRead()

  Returns the total number of uncompressed bytes input so far.

  Specified by:
    `getBytesRead` in interface `Compressor`
  Returns:
    the total (non-negative) number of uncompressed bytes input so far

### reset

    public void reset()

  Description copied from interface: `Compressor`
  Resets compressor so that a new set of input data can be processed.

  Specified by:
    `reset` in interface `Compressor`

### end

    public void end()

  Description copied from interface: `Compressor`
  Closes the compressor and discards any unprocessed input.

  Specified by:
    `end` in interface `Compressor`

Copyright © 2009 The Apache Software Foundation