|
|||||||||
| Home >> All >> org >> apache >> batik >> ext >> awt >> image >> [ codec overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.apache.batik.ext.awt.image.codec
Class SeekableStream

java.lang.Objectjava.io.InputStream
org.apache.batik.ext.awt.image.codec.SeekableStream
- All Implemented Interfaces:
- java.io.Closeable, java.io.DataInput
- Direct Known Subclasses:
- FileCacheSeekableStream, ForwardSeekableStream, MemoryCacheSeekableStream
- public abstract class SeekableStream
- extends java.io.InputStream
- implements java.io.DataInput
- extends java.io.InputStream
An abstract subclass of java.io.InputStream that allows seeking
within the input, similar to the RandomAccessFile class.
Additionally, the DataInput interface is supported and extended
to include support for little-endian representations of fundamental data
types.
In addition to the familiar methods from InputStream, the
methods getFilePointer(), seek(), are defined as in
the RandomAccessFile class. The canSeekBackwards()
method will return true if it is permissible to seek to a
position earlier in the stream than the current value of
getFilePointer(). Some subclasses of
SeekableStream guarantee the ability to seek backwards while
others may not offer this feature in the interest of providing greater
efficiency for those users who do not require it.
The DataInput interface is supported as well. This included
the skipBytes() and readFully() methods and a
variety of read methods for various data types.
A number of concrete subclasses of SeekableStream are
supplied in the com.sun.media.jai.codec package.
Three classes are provided for the purpose of adapting a standard
InputStream to the SeekableStream interface.
ForwardSeekableStream does not allows seeking backwards, but is
inexpensive to use. FileCacheSeekableStream maintains a copy of
all of the data read from the input in a temporary file; this file will be
discarded automatically when the FileSeekableStream is
finalized, or when the JVM exits normally.
FileCacheSeekableStream is intended to be reasonably efficient
apart from the unavoidable use of disk space. In circumstances where the
creation of a temporary file is not possible,
MemoryCacheSeekableStream may be used.
MemoryCacheSeekableStream creates a potentially large in-memory
buffer to store the stream data and so should be avoided when possible.
The FileSeekableStream class wraps a File or
RandomAccessFile. It forwards requests to the real underlying
file. It performs a limited amount of caching in order to avoid excessive
I/O costs.
The SegmentedSeekableStream class performs a different sort
of function. It creates a SeekableStream from another
SeekableStream by selecting a series of portions or "segments".
Each segment starts at a specified location within the source
SeekableStream and extends for a specified number of bytes. The
StreamSegmentMapper interface and StreamSegment
class may be used to compute the segment positions dynamically.
A convenience methods, wrapInputStream is provided to
construct a suitable SeekableStream instance whose data is
supplied by a given InputStream. The caller, by means of the
canSeekBackwards parameter, determines whether support for
seeking backwards is required.
| Field Summary | |
protected long |
markPos
Marked position |
private byte[] |
ruileBuf
|
| Constructor Summary | |
SeekableStream()
|
|
| Method Summary | |
boolean |
canSeekBackwards()
Returns true if this object supports calls to
seek(pos) with an offset pos smaller
than the current offset, as returned by getFilePointer. |
protected void |
finalize()
Releases any system resources associated with this stream by calling the close() method. |
abstract long |
getFilePointer()
Returns the current offset in this stream. |
void |
mark(int readLimit)
Marks the current file position for later return using the reset() method. |
boolean |
markSupported()
Returns true if marking is supported. |
abstract int |
read()
Reads the next byte of data from the input stream. |
abstract int |
read(byte[] b,
int off,
int len)
Reads up to len bytes of data from the input stream into
an array of bytes. |
boolean |
readBoolean()
Reads a boolean from this stream. |
byte |
readByte()
Reads a signed eight-bit value from this stream. |
char |
readChar()
Reads a Unicode character from this stream. |
char |
readCharLE()
Reads a Unicode character from this stream in little-endian order. |
double |
readDouble()
Reads a double from this stream. |
double |
readDoubleLE()
Reads a double from this stream in little-endian order. |
float |
readFloat()
Reads a float from this stream. |
float |
readFloatLE()
Reads a float from this stream in little-endian order. |
void |
readFully(byte[] b)
Reads b.length bytes from this stream into the byte
array, starting at the current stream pointer. |
void |
readFully(byte[] b,
int off,
int len)
Reads exactly len bytes from this stream into the byte
array, starting at the current stream pointer. |
int |
readInt()
Reads a signed 32-bit integer from this stream. |
int |
readIntLE()
Reads a signed 32-bit integer from this stream in little-endian order. |
java.lang.String |
readLine()
Reads the next line of text from this stream. |
long |
readLong()
Reads a signed 64-bit integer from this stream. |
long |
readLongLE()
Reads a signed 64-bit integer from this stream in little-endian order. |
short |
readShort()
Reads a signed 16-bit number from this stream. |
short |
readShortLE()
Reads a signed 16-bit number from this stream in little-endian order. |
int |
readUnsignedByte()
Reads an unsigned eight-bit number from this stream. |
long |
readUnsignedInt()
Reads an unsigned 32-bit integer from this stream. |
long |
readUnsignedIntLE()
Reads an unsigned 32-bit integer from this stream in little-endian order. |
int |
readUnsignedShort()
Reads an unsigned 16-bit number from this stream. |
int |
readUnsignedShortLE()
Reads an unsigned 16-bit number from this stream in little-endian order. |
java.lang.String |
readUTF()
Reads in a string from this stream. |
void |
reset()
Returns the file position to its position at the time of the immediately previous call to the mark()
method. |
abstract 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. |
static SeekableStream |
wrapInputStream(java.io.InputStream is,
boolean canSeekBackwards)
Returns a SeekableStream that will read from a
given InputStream, optionally including support
for seeking backwards. |
| Methods inherited from class java.io.InputStream |
available, close, read, skip |
| Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
markPos
protected long markPos
- Marked position
ruileBuf
private byte[] ruileBuf
| Constructor Detail |
SeekableStream
public SeekableStream()
| Method Detail |
wrapInputStream
public static SeekableStream wrapInputStream(java.io.InputStream is, boolean canSeekBackwards)
- Returns a
SeekableStreamthat will read from a givenInputStream, optionally including support for seeking backwards. This is a convenience method that avoids the need to instantiate specific subclasses ofSeekableStreamdepending on the current security model.
read
public abstract int read()
throws java.io.IOException
- Reads the next byte of data from the input stream. The value byte is
returned as an
intin the range0to255. If no byte is available because the end of the stream has been reached, the value-1is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.A subclass must provide an implementation of this method.
read
public abstract int read(byte[] b,
int off,
int len)
throws java.io.IOException
- Reads up to
lenbytes of data from the input stream into an array of bytes. An attempt is made to read as many aslenbytes, but a smaller number may be read, possibly zero. The number of bytes actually read is returned as an integer.This method blocks until input data is available, end of stream is detected, or an exception is thrown.
If
bisnull, aNullPointerExceptionis thrown.If
offis negative, orlenis negative, oroff+lenis greater than the length of the arrayb, then anIndexOutOfBoundsExceptionis thrown.If
lenis zero, then no bytes are read and0is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of stream, the value-1is returned; otherwise, at least one byte is read and stored intob.The first byte read is stored into element
b[off], the next one intob[off+1], and so on. The number of bytes read is, at most, equal tolen. Let k be the number of bytes actually read; these bytes will be stored in elementsb[off]throughb[off+k-1], leaving elementsb[off+k]throughb[off+len-1]unaffected.In every case, elements
b[0]throughb[off]and elementsb[off+len]throughb[b.length-1]are unaffected.If the first byte cannot be read for any reason other than end of stream, then an
IOExceptionis thrown. In particular, anIOExceptionis thrown if the input stream has been closed.A subclass must provide an implementation of this method.
mark
public void mark(int readLimit)
- Marks the current file position for later return using
the
reset()method.
reset
public void reset()
throws java.io.IOException
- Returns the file position to its position at the time of
the immediately previous call to the
mark()method.
markSupported
public boolean markSupported()
- Returns
trueif marking is supported. Marking is automatically supported forSeekableStreamsubclasses that support seeking backeards. Subclasses that do not support seeking backwards but do support marking must override this method.
canSeekBackwards
public boolean canSeekBackwards()
- Returns
trueif this object supports calls toseek(pos)with an offsetpossmaller than the current offset, as returned bygetFilePointer.
getFilePointer
public abstract long getFilePointer()
throws java.io.IOException
- Returns the current offset in this stream.
seek
public abstract void seek(long pos)
throws java.io.IOException
- Sets the offset, measured from the beginning of this
stream, at which the next read occurs.
If
canSeekBackwards()returnsfalse, then settingposto an offset smaller than the current value ofgetFilePointer()will have no effect.
readFully
public final void readFully(byte[] b)
throws java.io.IOException
- Reads
b.lengthbytes from this stream into the byte array, starting at the current stream pointer. This method reads repeatedly from the stream until the requested number of bytes are read. This method blocks until the requested number of bytes are read, the end of the stream is detected, or an exception is thrown.- Specified by:
readFullyin interfacejava.io.DataInput
readFully
public final void readFully(byte[] b,
int off,
int len)
throws java.io.IOException
- Reads exactly
lenbytes from this stream into the byte array, starting at the current stream pointer. This method reads repeatedly from the stream until the requested number of bytes are read. This method blocks until the requested number of bytes are read, the end of the stream is detected, or an exception is thrown.- Specified by:
readFullyin interfacejava.io.DataInput
skipBytes
public int skipBytes(int n)
throws java.io.IOException
- Attempts to skip over
nbytes 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
nbytes have been skipped is only one possibility. This method never throws anEOFException. The actual number of bytes skipped is returned. Ifnis negative, no bytes are skipped.- Specified by:
skipBytesin interfacejava.io.DataInput
readBoolean
public final boolean readBoolean()
throws java.io.IOException
- Reads a
booleanfrom this stream. This method reads a single byte from the stream, starting at the current stream pointer. A value of0representsfalse. Any other value representstrue. This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.- Specified by:
readBooleanin interfacejava.io.DataInput
readByte
public final byte readByte()
throws java.io.IOException
- Reads a signed eight-bit value from this stream. This method reads a
byte from the stream, starting from the current stream pointer.
If the byte read is
b, where0 <= b <= 255, then the result is:(byte)(b)This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readBytein interfacejava.io.DataInput
readUnsignedByte
public final int readUnsignedByte()
throws java.io.IOException
- Reads an unsigned eight-bit number from this stream. This method reads
a byte from this stream, starting at the current stream pointer,
and returns that byte.
This method blocks until the byte is read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readUnsignedBytein interfacejava.io.DataInput
readShort
public final short readShort()
throws java.io.IOException
- Reads a signed 16-bit number from this stream.
The method reads two
bytes from this stream, starting at the current stream pointer.
If the two bytes read, in order, are
b1andb2, where each of the two values is between0and255, inclusive, then the result is equal to:(short)((b1 << 8) | b2)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readShortin interfacejava.io.DataInput
readShortLE
public final short readShortLE()
throws java.io.IOException
- Reads a signed 16-bit number from this stream in little-endian order.
The method reads two
bytes from this stream, starting at the current stream pointer.
If the two bytes read, in order, are
b1andb2, where each of the two values is between0and255, inclusive, then the result is equal to:(short)((b2 << 8) | b1)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
readUnsignedShort
public final int readUnsignedShort()
throws java.io.IOException
- Reads an unsigned 16-bit number from this stream. This method reads
two bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(b1 << 8) | b2This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readUnsignedShortin interfacejava.io.DataInput
readUnsignedShortLE
public final int readUnsignedShortLE()
throws java.io.IOException
- Reads an unsigned 16-bit number from this stream in little-endian order.
This method reads
two bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(b2 << 8) | b1This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
readChar
public final char readChar()
throws java.io.IOException
- Reads a Unicode character from this stream. This method reads two
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(char)((b1 << 8) | b2)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readCharin interfacejava.io.DataInput
readCharLE
public final char readCharLE()
throws java.io.IOException
- Reads a Unicode character from this stream in little-endian order.
This method reads two
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1andb2, where0 <= b1, b2 <= 255, then the result is equal to:(char)((b2 << 8) | b1)This method blocks until the two bytes are read, the end of the stream is detected, or an exception is thrown.
readInt
public final int readInt()
throws java.io.IOException
- Reads a signed 32-bit integer from this stream. This method reads 4
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b1 << 24) | (b2 << 16) + (b3 << 8) + b4This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readIntin interfacejava.io.DataInput
readIntLE
public final int readIntLE()
throws java.io.IOException
- Reads a signed 32-bit integer from this stream in little-endian order.
This method reads 4
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b4 << 24) | (b3 << 16) + (b2 << 8) + b1This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
readUnsignedInt
public final long readUnsignedInt()
throws java.io.IOException
- Reads an unsigned 32-bit integer from this stream. This method reads 4
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b1 << 24) | (b2 << 16) + (b3 << 8) + b4This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
readUnsignedIntLE
public final long readUnsignedIntLE()
throws java.io.IOException
- Reads an unsigned 32-bit integer from this stream in little-endian
order. This method reads 4
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3, andb4, where0 <= b1, b2, b3, b4 <= 255, then the result is equal to:(b4 << 24) | (b3 << 16) + (b2 << 8) + b1This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
readLong
public final long readLong()
throws java.io.IOException
- Reads a signed 64-bit integer from this stream. This method reads eight
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3,b4,b5,b6,b7, andb8,where:0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,then the result is equal to:
((long)b1 << 56) + ((long)b2 << 48) + ((long)b3 << 40) + ((long)b4 << 32) + ((long)b5 << 24) + ((long)b6 << 16) + ((long)b7 << 8) + b8This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readLongin interfacejava.io.DataInput
readLongLE
public final long readLongLE()
throws java.io.IOException
- Reads a signed 64-bit integer from this stream in little-endian
order. This method reads eight
bytes from the stream, starting at the current stream pointer.
If the bytes read, in order, are
b1,b2,b3,b4,b5,b6,b7, andb8,where:0 <= b1, b2, b3, b4, b5, b6, b7, b8 <=255,then the result is equal to:
((long)b1 << 56) + ((long)b2 << 48) + ((long)b3 << 40) + ((long)b4 << 32) + ((long)b5 << 24) + ((long)b6 << 16) + ((long)b7 << 8) + b8This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.
readFloat
public final float readFloat()
throws java.io.IOException
- Reads a
floatfrom this stream. This method reads anintvalue, starting at the current stream pointer, as if by thereadIntmethod and then converts thatintto afloatusing theintBitsToFloatmethod in classFloat.This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readFloatin interfacejava.io.DataInput
readFloatLE
public final float readFloatLE()
throws java.io.IOException
- Reads a
floatfrom this stream in little-endian order. This method reads anintvalue, starting at the current stream pointer, as if by thereadIntmethod and then converts thatintto afloatusing theintBitsToFloatmethod in classFloat.This method blocks until the four bytes are read, the end of the stream is detected, or an exception is thrown.
readDouble
public final double readDouble()
throws java.io.IOException
- Reads a
doublefrom this stream. This method reads alongvalue, starting at the current stream pointer, as if by thereadLongmethod and then converts thatlongto adoubleusing thelongBitsToDoublemethod in classDouble.This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readDoublein interfacejava.io.DataInput
readDoubleLE
public final double readDoubleLE()
throws java.io.IOException
- Reads a
doublefrom this stream in little-endian order. This method reads alongvalue, starting at the current stream pointer, as if by thereadLongmethod and then converts thatlongto adoubleusing thelongBitsToDoublemethod in classDouble.This method blocks until the eight bytes are read, the end of the stream is detected, or an exception is thrown.
readLine
public final java.lang.String readLine() throws java.io.IOException
- Reads the next line of text from this stream. This method successively
reads bytes from the stream, starting at the current stream pointer,
until it reaches a line terminator or the end
of the stream. Each byte is converted into a character by taking the
byte's value for the lower eight bits of the character and setting the
high eight bits of the character to zero. This method does not,
therefore, support the full Unicode character set.
A line of text is terminated by a carriage-return character (
'\r'), a newline character ('\n'), a carriage-return character immediately followed by a newline character, or the end of the stream. Line-terminating characters are discarded and are not included as part of the string returned.This method blocks until a newline character is read, a carriage return and the byte following it are read (to see if it is a newline), the end of the stream is reached, or an exception is thrown.
- Specified by:
readLinein interfacejava.io.DataInput
readUTF
public final java.lang.String readUTF() throws java.io.IOException
- Reads in a string from this stream. The string has been encoded
using a modified UTF-8 format.
The first two bytes are read, starting from the current stream pointer, as if by
readUnsignedShort. This value gives the number of following bytes that are in the encoded string, not the length of the resulting string. The following bytes are then interpreted as bytes encoding characters in the UTF-8 format and are converted into characters.This method blocks until all the bytes are read, the end of the stream is detected, or an exception is thrown.
- Specified by:
readUTFin interfacejava.io.DataInput
finalize
protected void finalize()
throws java.lang.Throwable
- Releases any system resources associated with this stream
by calling the
close()method.
|
|||||||||
| Home >> All >> org >> apache >> batik >> ext >> awt >> image >> [ codec overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC