## org.apache.hadoop.io.compress
Class BlockCompressorStream

    java.lang.Object
      java.io.OutputStream
          org.apache.hadoop.io.compress.CompressionOutputStream
              org.apache.hadoop.io.compress.CompressorStream
                  org.apache.hadoop.io.compress.BlockCompressorStream

All Implemented Interfaces:
  Closeable, Flushable

    public class BlockCompressorStream

extends CompressorStream

A `CompressorStream` which works with 'block-based' based compression algorithms, as opposed to 'stream-based' compression algorithms. It should be noted that this wrapper does not guarantee that blocks will be sized for the compressor. If the `Compressor` requires buffering to effect meaningful compression, it is responsible for it.

Field Summary

Fields inherited from class org.apache.hadoop.io.compress.CompressorStream
`buffer, closed, compressor`

Fields inherited from class org.apache.hadoop.io.compress.CompressionOutputStream
`out`

Constructor Summary
`BlockCompressorStream(OutputStream out, Compressor compressor)` Create a `BlockCompressorStream` with given output-stream and compressor.
`BlockCompressorStream(OutputStream out, Compressor compressor, int bufferSize, int compressionOverhead)` Create a `BlockCompressorStream`.

Method Summary
`protected void` `compress()`
`void` `finish()` Finishes writing compressed data to the output stream without closing the underlying stream.
`void` `write(byte[] b, int off, int len)` Write the data provided to the compression codec, compressing no more than the buffer size less the compression overhead as specified during construction for each block.

Methods inherited from class org.apache.hadoop.io.compress.CompressorStream
`close, resetState, write`

Methods inherited from class org.apache.hadoop.io.compress.CompressionOutputStream
`flush`

Methods inherited from class java.io.OutputStream
`write`

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

Constructor Detail

### BlockCompressorStream

    public BlockCompressorStream(OutputStream out,
                                 Compressor compressor,
                                 int bufferSize,
                                 int compressionOverhead)

  Create a `BlockCompressorStream`.

  Parameters:
    `out` - stream
    `compressor` - compressor to be used
    `bufferSize` - size of buffer
    `compressionOverhead` - maximum 'overhead' of the compression algorithm with given bufferSize

### BlockCompressorStream

    public BlockCompressorStream(OutputStream out,
                                 Compressor compressor)

  Create a `BlockCompressorStream` with given output-stream and compressor. Use default of 512 as bufferSize and compressionOverhead of (1% of bufferSize + 12 bytes) = 18 bytes (zlib algorithm).

  Parameters:
    `out` - stream
    `compressor` - compressor to be used

Method Detail

### write

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

  Write the data provided to the compression codec, compressing no more than the buffer size less the compression overhead as specified during construction for each block. Each block contains the uncompressed length for the block, followed by one or more length-prefixed blocks of compressed data.

  Overrides:
    `write` in class `CompressorStream`
  Throws:
    `IOException`

### finish

    public void finish()
                throws IOException

  Description copied from class: `CompressionOutputStream`
  Finishes writing compressed data to the output stream without closing the underlying stream.

  Overrides:
    `finish` in class `CompressorStream`
  Throws:
    `IOException`

### compress

    protected void compress()
                     throws IOException

  Overrides:
    `compress` in class `CompressorStream`
  Throws:
    `IOException`

Copyright © 2009 The Apache Software Foundation