org.apache.tomcat.util.http.fileupload.util

## Class LimitedInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - org.apache.tomcat.util.http.fileupload.util.LimitedInputStream

All Implemented Interfaces:
  Closeable, AutoCloseable

    public abstract class LimitedInputStream
    extends FilterInputStream
    implements Closeable

An input stream, which limits its data size. This stream is used, if the content length is unknown.

### Field Summary

### Fields inherited from class java.io.FilterInputStream

`in`

### Constructor Summary

Constructors
Constructor and Description
`LimitedInputStream(InputStream inputStream, long pSizeMax)` Creates a new instance.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `close()` Closes this input stream and releases any system resources associated with the stream.
`boolean` `isClosed()` Returns, whether this stream is already closed.
`protected abstract void` `raiseError(long pSizeMax, long pCount)` Called to indicate, that the input streams limit has been exceeded.
`int` `read()` Reads the next byte of data from this input stream.
`int` `read(byte[] b, int off, int len)` Reads up to `len` bytes of data from this input stream into an array of bytes.

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

`available, mark, markSupported, read, reset, skip`

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

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

### Constructor Detail

#### LimitedInputStream

    public LimitedInputStream(InputStream inputStream,
                              long pSizeMax)

Creates a new instance.

Parameters:
  `inputStream` - The input stream, which shall be limited.
  `pSizeMax` - The limit; no more than this number of bytes shall be returned by the source stream.

### Method Detail

#### raiseError

    protected abstract void raiseError(long pSizeMax,
                                       long pCount)
                                throws IOException

Called to indicate, that the input streams limit has been exceeded.

Parameters:
  `pSizeMax` - The input streams limit, in bytes.
  `pCount` - The actual number of bytes.
Throws:
  `IOException` - The called method is expected to raise an IOException.

#### read

    public int read()
             throws IOException

Reads the next byte of data from this input stream. The value byte is returned as an `int` in the range `0` to `255`. If no byte is available because the end of the stream has been reached, the value `-1` is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

This method simply performs `in.read()` and returns the result.

Overrides:
  `read` in class `FilterInputStream`
Returns:
  the next byte of data, or `-1` if the end of the stream is reached.
Throws:
  `IOException` - if an I/O error occurs.
See Also:
  `FilterInputStream.in`

#### read

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

Reads up to `len` bytes of data from this input stream into an array of bytes. If `len` is not zero, the method blocks until some input is available; otherwise, no bytes are read and `0` is returned.

This method simply performs `in.read(b, off, len)` and returns the result.

Overrides:
  `read` in class `FilterInputStream`
Parameters:
  `b` - the buffer into which the data is read.
  `off` - The start offset in the destination array `b`.
  `len` - the maximum number of bytes read.
Returns:
  the total number of bytes read into the buffer, or `-1` if there is no more data because the end of the stream has been reached.
Throws:
  `NullPointerException` - If `b` is `null`.
  `IndexOutOfBoundsException` - If `off` is negative, `len` is negative, or `len` is greater than `b.length - off`
  `IOException` - if an I/O error occurs.
See Also:
  `FilterInputStream.in`

#### isClosed

    public boolean isClosed()
                     throws IOException

Returns, whether this stream is already closed.

Returns:
  True, if the stream is closed, otherwise false.
Throws:
  `IOException` - An I/O error occurred.

#### close

    public void close()
               throws IOException

Closes this input stream and releases any system resources associated with the stream. This method simply performs `in.close()`.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Overrides:
  `close` in class `FilterInputStream`
Throws:
  `IOException` - if an I/O error occurs.
See Also:
  `FilterInputStream.in`