# Class MultipartStream.ItemInputStream

java.lang.Object
java.io.InputStream
org.apache.tomcat.util.http.fileupload.MultipartStream.ItemInputStream

All Implemented Interfaces:
  `Closeable, AutoCloseable, Closeable`

Enclosing class:
  `MultipartStream`

public class MultipartStream.ItemInputStream extends InputStream implements Closeable
An `InputStream` for reading an items contents.

## Method Summary

Modifier and Type
Method
Description
`int`
`available()`
Returns the number of bytes, which are currently available, without blocking.
`void`
`close()`
Closes the input stream.
`void`
`close(boolean closeUnderlying)`
Closes the input stream.
`long`
`getBytesRead()`
Returns the number of bytes, which have been read by the stream.
`boolean`
`isClosed()`
Returns, whether the stream is closed.
`int`
`read()`
Returns the next byte in the stream.
`int`
`read(byte[] b, int off, int len)`
Reads bytes into the given buffer.
`long`
`skip(long bytes)`
Skips the given number of bytes.

### Methods inherited from class InputStream

`mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skipNBytes, transferTo`

### Methods inherited from class Object

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

## Method Details

### available

public int available() throws IOException
Returns the number of bytes, which are currently available, without blocking.

Overrides:
  `available` in class `InputStream`
Returns:
  Number of bytes in the buffer.
Throws:
  `IOException` - An I/O error occurs.

### close

public void close() throws IOException
Closes the input stream.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `InputStream`
Throws:
  `IOException` - An I/O error occurred.

### close

public void close(boolean closeUnderlying) throws IOException
Closes the input stream.

Parameters:
  `closeUnderlying` - Whether to close the underlying stream (hard close)
Throws:
  `IOException` - An I/O error occurred.

### getBytesRead

public long getBytesRead()
Returns the number of bytes, which have been read by the stream.

Returns:
  Number of bytes, which have been read so far.

### isClosed

public boolean isClosed()
Returns, whether the stream is closed.

Specified by:
  `isClosed` in interface `Closeable`
Returns:
  True, if the stream is closed, otherwise false.

### read

public int read() throws IOException
Returns the next byte in the stream.

Specified by:
  `read` in class `InputStream`
Returns:
  The next byte in the stream, as a non-negative integer, or -1 for EOF.
Throws:
  `IOException` - An I/O error occurred.

### read

public int read(byte[] b, int off, int len) throws IOException
Reads bytes into the given buffer.

Overrides:
  `read` in class `InputStream`
Parameters:
  `b` - The destination buffer, where to write to.
  `off` - Offset of the first byte in the buffer.
  `len` - Maximum number of bytes to read.
Returns:
  Number of bytes, which have been actually read, or -1 for EOF.
Throws:
  `IOException` - An I/O error occurred.

### skip

public long skip(long bytes) throws IOException
Skips the given number of bytes.

Overrides:
  `skip` in class `InputStream`
Parameters:
  `bytes` - Number of bytes to skip.
Returns:
  The number of bytes, which have actually been skipped.
Throws:
  `IOException` - An I/O error occurred.