Package uk.ac.starlink.util

# Class Compression

java.lang.Object
uk.ac.starlink.util.Compression

public abstract class Compression extends Object
Characterises the compression status of a stream, and provides methods for decompressing it.

Author:
  Mark Taylor (Starlink)

## Field Summary

Fields
Modifier and Type
Field
Description
`static final Compression`
`BZIP2`
A Compression object representing BZip2 compression.
`static final Compression`
`COMPRESS`
A Compression object representing Unix compress-type compression.
`static final Compression`
`GZIP`
A Compression object representing GZip compression.
`static final int`
`MAGIC_SIZE`
Number of bytes needed to determine compression type (magic number).
`static final Compression`
`NONE`
A Compression object representing no compression (or perhaps an unknown one).

## Method Summary

Modifier and Type
Method
Description
`abstract InputStream`
`decompress(InputStream raw)`
Returns a stream which is a decompressed version of the input stream, according to this objects compression type.
`static InputStream`
`decompressStatic(InputStream raw)`
Returns a decompressed version of the given input stream.
`static Compression`
`getCompression(byte[] magic)`
Returns a Compression object characterising the compression (if any) represented by a given magic number.
`String`
`toString()`
Returns the name of this compression type.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### MAGIC_SIZE

public static final int MAGIC_SIZE
Number of bytes needed to determine compression type (magic number).

See Also:
  - Constant Field Values

### NONE

public static final Compression NONE
A Compression object representing no compression (or perhaps an unknown one). The `decompress` method will return the raw input stream unchanged.

### GZIP

public static final Compression GZIP
A Compression object representing GZip compression.

### BZIP2

public static final Compression BZIP2
A Compression object representing BZip2 compression.

### COMPRESS

public static final Compression COMPRESS
A Compression object representing Unix compress-type compression.

## Method Details

### decompress

public abstract InputStream decompress(InputStream raw) throws IOException
Returns a stream which is a decompressed version of the input stream, according to this objects compression type.

Parameters:
  `raw` - the raw input stream
Returns:
  a stream giving the decompressed version of `raw`
Throws:
  `IOException`

### getCompression

public static Compression getCompression(byte[] magic)
Returns a Compression object characterising the compression (if any) represented by a given magic number.

Parameters:
  `magic` - a buffer containing the first `MAGIC_SIZE` bytes of input of the stream to be characterised
Returns:
  a `Compression` object of the type represented by `magic`
Throws:
  `IllegalArgumentException` - if `magic.length<MAGIC_SIZE`

### decompressStatic

public static InputStream decompressStatic(InputStream raw) throws IOException
Returns a decompressed version of the given input stream.

Parameters:
  `raw` - the raw input stream
Returns:
  the decompressed version of `raw`
Throws:
  `IOException`

### toString

public String toString()
Returns the name of this compression type.

Overrides:
  `toString` in class `Object`
Returns:
  string representation