com.sun.media.jai.codec
Class ByteArraySeekableStream

java.lang.Object
  extended byjava.io.InputStream
      extended bycom.sun.media.jai.codec.SeekableStream
          extended bycom.sun.media.jai.codec.ByteArraySeekableStream
All Implemented Interfaces:
DataInput

public class ByteArraySeekableStream
extends SeekableStream

A subclass of SeekableStream that takes input from an array of bytes. Seeking backwards is supported. The mark() and resest() methods are supported.

This class is not a committed part of the JAI API. It may be removed or changed in future releases of JAI.


Field Summary
 
Fields inherited from class com.sun.media.jai.codec.SeekableStream
markPos
 
Constructor Summary
ByteArraySeekableStream(byte[] src)
          Constructs a ByteArraySeekableStream taking input from an entire input byte array.
ByteArraySeekableStream(byte[] src, int offset, int length)
          Constructs a ByteArraySeekableStream taking input from a given segment of an input byte array.
 
Method Summary
 int available()
          Returns the number of bytes that can be read from this input stream without blocking.
 boolean canSeekBackwards()
          Returns true since this object supports seeking backwards.
 void close()
          Does nothing.
 long getFilePointer()
          Returns the current offset in this stream.
 long length()
          Returns the number of valid bytes in the input array.
 int read()
          Reads the next byte of data from the input array.
 int read(byte[] b, int off, int len)
          Copies up to len bytes of data from the input array into an array of bytes.
 void seek(long pos)
          Sets the offset, measured from the beginning of this stream, at which the next read occurs.
 int skipBytes(int n)
          Attempts to skip over n bytes of input discarding the skipped bytes.
 
Methods inherited from class com.sun.media.jai.codec.SeekableStream
finalize, mark, markSupported, readBoolean, readByte, readChar, readCharLE, readDouble, readDoubleLE, readFloat, readFloatLE, readFully, readFully, readInt, readIntLE, readLine, readLong, readLongLE, readShort, readShortLE, readUnsignedByte, readUnsignedInt, readUnsignedIntLE, readUnsignedShort, readUnsignedShortLE, readUTF, reset, wrapInputStream
 
Methods inherited from class java.io.InputStream
read, skip
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ByteArraySeekableStream

public ByteArraySeekableStream(byte[] src,
                               int offset,
                               int length)
                        throws IOException
Constructs a ByteArraySeekableStream taking input from a given segment of an input byte array.


ByteArraySeekableStream

public ByteArraySeekableStream(byte[] src)
                        throws IOException
Constructs a ByteArraySeekableStream taking input from an entire input byte array.

Method Detail

available

public int available()
Returns the number of bytes that can be read from this input stream without blocking. The value returned is Math.min(offset + length, src.length) - pos, which is the number of bytes remaining to be read from the input buffer.

Returns:
the number of bytes that can be read from the input stream without blocking.

canSeekBackwards

public boolean canSeekBackwards()
Returns true since this object supports seeking backwards.

Overrides:
canSeekBackwards in class SeekableStream

getFilePointer

public long getFilePointer()
Returns the current offset in this stream.

Specified by:
getFilePointer in class SeekableStream
Returns:
the offset from the beginning of the stream, in bytes, at which the next read occurs.

seek

public void seek(long pos)
Sets the offset, measured from the beginning of this stream, at which the next read occurs. Seeking backwards is allowed.

Specified by:
seek in class SeekableStream
Parameters:
pos - the offset position, measured in bytes from the beginning of the stream, at which to set the stream pointer.

read

public int read()
Reads the next byte of data from the input array. 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.

Specified by:
read in class SeekableStream
Returns:
the next byte of data, or -1 if the end of the stream is reached.

read

public int read(byte[] b,
                int off,
                int len)
Copies up to len bytes of data from the input array into an array of bytes. An attempt is made to copy as many as len bytes, but a smaller number may be copied, possibly zero. The number of bytes actually copied is returned as an integer.

If b is null, a NullPointerException is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

If len is zero, then no bytes are copied and 0 is returned; otherwise, there is an attempt to copy at least one byte. If no byte is available because the stream is at end of stream, the value -1 is returned; otherwise, at least one byte is copied into b.

The first byte copied is stored into element b[off], the next one into b[off+1], and so on. The number of bytes copied is, at most, equal to len. Let k be the number of bytes actually copied; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off] and elements b[off+len] through b[b.length-1] are unaffected.

Specified by:
read in class SeekableStream
Parameters:
b - the buffer into which the data is copied.
off - the start offset in array b at which the data is written.
len - the maximum number of bytes to copy.
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.

skipBytes

public int skipBytes(int n)
Attempts to skip over n bytes of input discarding the skipped bytes.

This method may skip over some smaller number of bytes, possibly zero. This may result from any of a number of conditions; reaching end of stream before n bytes have been skipped is only one possibility. This method never throws an EOFException. The actual number of bytes skipped is returned. If n is negative, no bytes are skipped.

Specified by:
skipBytes in interface DataInput
Overrides:
skipBytes in class SeekableStream
Parameters:
n - the number of bytes to be skipped.
Returns:
the actual number of bytes skipped.

close

public void close()
Does nothing.


length

public long length()
Returns the number of valid bytes in the input array.