org.tukaani.xz

## Class DeltaInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.tukaani.xz.DeltaInputStream

All Implemented Interfaces:
  Closeable, AutoCloseable

    public class DeltaInputStream
    extends InputStream

Decodes raw Delta-filtered data (no XZ headers).

The delta filter doesn't change the size of the data and thus it cannot have an end-of-payload marker. It will simply decode until its input stream indicates end of input.

### Field Summary

Fields
`static int` `DISTANCE_MAX` Largest supported delta calculation distance.
`static int` `DISTANCE_MIN` Smallest supported delta calculation distance.

### Constructor Summary

Constructors
Constructor and Description
`DeltaInputStream(InputStream in, int distance)` Creates a new Delta decoder with the given delta calculation distance.

### Method Summary

Methods
`int` `available()` Calls `in.available()`.
`void` `close()` Closes the stream and calls `in.close()`.
`int` `read()` Decode the next byte from this input stream.
`int` `read(byte[] buf, int off, int len)` Decode into an array of bytes.

### Methods inherited from class java.io.InputStream

`mark, markSupported, read, reset, skip`

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

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

### Field Detail

#### DISTANCE_MIN

    public static final int DISTANCE_MIN

Smallest supported delta calculation distance.

See Also:
  Constant Field Values

#### DISTANCE_MAX

    public static final int DISTANCE_MAX

Largest supported delta calculation distance.

See Also:
  Constant Field Values

### Constructor Detail

#### DeltaInputStream

    public DeltaInputStream(InputStream in,
                    int distance)

Creates a new Delta decoder with the given delta calculation distance.

Parameters:
  `in` - input stream from which Delta filtered data is read
  `distance` - delta calculation distance, must be in the range [`DISTANCE_MIN`, `DISTANCE_MAX`]

### Method Detail

#### read

    public int read()
             throws IOException

Decode the next byte from this input stream.

Specified by:
  `read` in class `InputStream`
Returns:
  the next decoded byte, or `-1` to indicate the end of input on the input stream `in`
Throws:
  `IOException` - may be thrown by `in`

#### read

    public int read(byte[] buf,
           int off,
           int len)
             throws IOException

Decode into an array of bytes.

This calls `in.read(buf, off, len)` and defilters the returned data.

Overrides:
  `read` in class `InputStream`
Parameters:
  `buf` - target buffer for decoded data
  `off` - start offset in `buf`
  `len` - maximum number of bytes to read
Returns:
  number of bytes read, or `-1` to indicate the end of the input stream `in`
Throws:
  `XZIOException` - if the stream has been closed
  `IOException` - may be thrown by underlaying input stream `in`

#### available

    public int available()
                  throws IOException

Calls `in.available()`.

Overrides:
  `available` in class `InputStream`
Returns:
  the value returned by `in.available()`
Throws:
  `IOException`

#### close

    public void close()
               throws IOException

Closes the stream and calls `in.close()`. If the stream was already closed, this does nothing.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Overrides:
  `close` in class `InputStream`
Throws:
  `IOException` - if thrown by `in.close()`