Package javax.mail.util

# Class SharedByteArrayInputStream

java.lang.Object
java.io.InputStream
java.io.ByteArrayInputStream
javax.mail.util.SharedByteArrayInputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `SharedInputStream`

public class SharedByteArrayInputStream extends ByteArrayInputStream implements SharedInputStream
A ByteArrayInputStream that implements the SharedInputStream interface, allowing the underlying byte array to be shared between multiple readers.

Since:
  JavaMail 1.4
Author:
  Bill Shannon

## Field Summary

Fields
Modifier and Type
Field
Description
`protected int`
`start`
Position within shared buffer that this stream starts at.

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

`buf, count, mark, pos`

## Constructor Summary

Constructors
Constructor
Description
`SharedByteArrayInputStream(byte[] buf)`
Create a SharedByteArrayInputStream representing the entire byte array.
`SharedByteArrayInputStream(byte[] buf, int offset, int length)`
Create a SharedByteArrayInputStream representing the part of the byte array from `offset` for `length` bytes.

## Method Summary

Modifier and Type
Method
Description
`long`
`getPosition()`
Return the current position in the InputStream, as an offset from the beginning of the InputStream.
`InputStream`
`newStream(long start, long end)`
Return a new InputStream representing a subset of the data from this InputStream, starting at `start` (inclusive) up to `end` (exclusive).

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

`available, close, mark, markSupported, read, read, readAllBytes, readNBytes, reset, skip, transferTo`

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

`nullInputStream, read, readNBytes, skipNBytes`

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

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

## Field Details

### start

protected int start
Position within shared buffer that this stream starts at.

## Constructor Details

### SharedByteArrayInputStream

public SharedByteArrayInputStream(byte[] buf)
Create a SharedByteArrayInputStream representing the entire byte array.

Parameters:
  `buf` - the byte array

### SharedByteArrayInputStream

public SharedByteArrayInputStream(byte[] buf, int offset, int length)
Create a SharedByteArrayInputStream representing the part of the byte array from `offset` for `length` bytes.

Parameters:
  `buf` - the byte array
  `offset` - offset in byte array to first byte to include
  `length` - number of bytes to include

## Method Details

### getPosition

public long getPosition()
Return the current position in the InputStream, as an offset from the beginning of the InputStream.

Specified by:
  `getPosition` in interface `SharedInputStream`
Returns:
  the current position

### newStream

public InputStream newStream(long start, long end)
Return a new InputStream representing a subset of the data from this InputStream, starting at `start` (inclusive) up to `end` (exclusive). `start` must be non-negative. If `end` is -1, the new stream ends at the same place as this stream. The returned InputStream will also implement the SharedInputStream interface.

Specified by:
  `newStream` in interface `SharedInputStream`
Parameters:
  `start` - the starting position
  `end` - the ending position + 1
Returns:
  the new stream